本文主要是介绍TCP/IP网络协议族分成及其每层作用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1、可以分为应用层、传输层、网络层、链路层
2、各层的作用
应用层(可以想象成是快递打包过程)
决定了向用户提供应用服务时通信的活动,将要进行的操作或者数据进行一个打包。
传输层(可以理解为选择顺丰、圆通等快递公司)
提供数据传输的方法,TCP(Transmission Control Protocol, 传输控制协议) 和 UDP(User Data Protocol,用户数据报协议)。
网络层:(可以想象成快递途中走什么路线)
处理网络上流动的数据包,该层规定了以什么杨的路径进行数据的传送,比如:通过ip,ip协议就在该层
物理层(可以理解为成快递运输的交通工具,飞机、火车等)
控制连接网络的一些硬件。操作系统、设备驱动、网卡、适配器、网线等
3、TCP的三次握手建立一个HTTP连接
seq是序列号,这是为了连接以后传送数据用的,ack是对收到的数据包的确认,值是等待接收的数据包的序列号。
在第一次消息发送中,A随机选取一个序列号作为自己的初始序号发送给B;第二次消息B使用ack对A的数据包进行确认,因为已经收到了序列号为x的数据包,准备接收序列号为x+1的包,所以ack=x+1,同时B告诉A自己的初始序列号,就是seq=y;第三条消息A告诉B收到了B的确认消息并准备建立连接,A自己此条消息的序列号是x+1,所以seq=x+1,而ack=y+1是表示A正准备接收B序列号为y+1的数据包。
seq是数据包本身的序列号;ack是期望对方继续发送的那个数据包的序列号。
3次握手过程的状态:
syn_send:当某个socket执行connect的时候,首先发送SYN报文,因此也进入了SYN_SEND状态,并等待服务端发送过来的报文,syn_send表示客户端已发送SYN报文。
listener:这个很好理解,就是服务端的某个socket处于监听状态,可以接收连接了。
syn_rcvd:这个状态与SYN_SEND状态差不多,表示接收了SYN报文,这个状态是服务器端的socket在建立tcp连接是的三次握手中的一个中间状态,很短暂,当客户端收到ACK报文的时候,表示连接确立,进入established状态。
这篇关于TCP/IP网络协议族分成及其每层作用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!