计算机网络是计算机专业的基础课程,本文通过这样一个问题来简单总结TCP/IP 四层模型的一些知识。
目录
1.url解析(应用层)
浏览器首先解析用户输入的url,将用户输入的url封装成一个请求体。
一个URL具有丰富的信息,举例:http://www.xxx.com/aaa/bbb/ccc
(1) http:表示访问的数据的协议
(2)www.xxx.com:访问的服务器名称
(3)aaa/bbb/ccc:访问的数据源的路径名(如果没有默认访问主页面,如index.html等等)
总结:我想通过http协议,访问www.xxx.com服务器下路径为aaa/bbb/ccc的数据(文件)。
确认以上内容后,浏览器便可以将我们的请求信息组装成http请求报文
报文主要包含三个部分:
请求(状态)行:
这里定义了请求/响应的一些元信息:如请求的方法,路径,响应的状态
消息头:
这里定义了消息的一些元信息:如消息的编码格式,内容形式等等一些基本信息
消息体:
这里面存放的就是消息的真实具体内容。报文的大致结构如下图所示:
2.DNS域名解析(应用层)
通过浏览器解析完URL之后,需要操作系统将消息发生给对应的服务器,操作系统识别不了域名,只识别ip地址,即在发送之前,需要先明确www.xxx.com对应的ip是多少。而完成这个工作的过程称为DNS域名解析。
这可以类比成打电话,需要先知道对方的号码,我们一般会查询电话篇或者通讯录找到对方的号码,而DNS服务器就可以理解为网络钟的通讯录,其中记录了域名(对方)与IP(电话号码)的对应关系。
3.建立TCP/UDP连接(传输层)
HTTP消息和对应的IP地址都明确后,我们需要与服务器建立连接,这个时候就要交给传输层的TCP/UDP。
HTTP基于TCP协议进行传输的,传输层TCP协议将Http消息体封装,在其加上头部文件,其结构如下:
TCP是可靠的数据传输方式,主要体现在以下几个方面
1.每个TCP报文都有自己的序号,在发送到服务端,可以有效防止乱序问题。
2.每个TCP报文有确认号,用于确认发出去的数据对方是否收到。如果没有收到,则会进行重传,可以有效防止丢包问题。
3.TCP有自己的流量控制策略:双方都会说明自己处理数据的能力(窗口大小),可以防止通信双方发送过大或者过小的数据。
4.TCP有自己的拥塞控制策略。动态控制自己的发送速度,防止自己发送过快,对方处理不过来,出现拥塞问题。
5.TCP在传输数据前,需要进行三次握手来建立连接,保证连接的可靠性
TCP三次握手的基本流程:(这里不详细展开)
step1:服务器主动监听某个端口,处于listen状态
step2:客户端主动发起连接SYN。(第一次握手)
step3:服务器端收到发起的连接,返回SYN和ACK。(第二次握手)
step4:客户端收到服务端发送的SYN和ACK,发送确认ACK的ACK。(第三次握手)
step5:服务端收到确认ACK的ACK后,连接成功建立
4.IP远程定位(网络层)
TCP 模块在将数据封装好之后,需要委托 IP 模块将数据封装成网络包,网络包一样有自己的头文件,其中最重要的就是源ip地址和目标ip地址。
注意,IP头部中的协议指的是上一层的的协议。
5.点对点通信(网络接口层 or 链路层)
生成了 IP 头部之后,网络包在 IP 头部的前面加上MAC头部,MAC头部中主要信息见下图
注意,MAC头部中的协议指的是上一层的的协议。
到这里,我们可以宏观看一下数据包的结构:
6.信号转换并发送(网络接口层 or 链路层)
以上生成的数据都是数字信息,是没有办法直接传送给目标的,因为网线不能传输数字信息,需要借助网卡将数字信息转换为电信号并发送出去,最后借助路由器将信息发送出去。
同理,在解析过程中,则是一层一层的将数据包拆开,服务器从而可以获取我们所发送的信息内容。