TCP/IP协议簇介绍

TCP/IP协议簇介绍

OSI参考模型

OSI(Open System Interconnect),即开放式系统互联,是一种标准的网络互联架构。他规定了七层结构(物理层、数据链路层、网络层、传输层、会话层、表示层和应用层),协议簇实际是遵循这种框架构建的实际应用。

TCP协议

TCP协议基本介绍

TCP(Transmission Control Protocol,传输控制协议)。TCP是可靠的流传输服务,通过主动确认的技术保证从一个主机传送到另一个主机的数据流不会出现重复数据或丢失数据的情况。
主动确认:发送方要求接收方在收到数据后,发送一个确认消息,等到收到确认消息后,再发送下一个确认数据;
超时重发:发送方在发送数据后,气动定时器,当定时器过期前,没有收到确认消息,则会重发最近已发送的数据包。

TCP协议报文格式

TPC报文格式
TCP报文格式详解
TCP报文拥有固定的20个字节的首部,当然TCP首部大小并不是固定的20个字节,还存在选项和填充部分。实际TCP的头部最低20,最长60个字节。
TCP包头中没有“包长度”字段,而完全依靠IP层去处理分帧。这就是为什么TCP常常被称作一种“流协议”的原因,开发者在使用TCP服务的时候,不必去关心数据包的大小,只需将SOCKET看作一条数据流的入口,往里面放数据就可以了,TCP协议本身会进行拥塞/流量控制。

TCP的握手与挥手

参考链接:TCP 握手和挥手图解(有限状态机)

握手

TCP握手与挥手过程

  1. 第一次握手:Client将标志位SYN置为1,随机产生一个值seq=x, 并将该数据发送给Server,Client进入SYN_SENT状态,等待Server确认。
  2. 第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=x+1,随机产生一个seq=y,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。
  3. 第三次握手:Client收到确认后,检查ack是否为x+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=y+1,并将该数据包发送给Server,Server检查ack是否为y+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。
挥手

挥手流程

  1. A 的 TCP 进程先向服务端发出连接释放报文段,并停止发送数据,主动关闭 TCP 连接。释放连接报文段中 FIN=1,序号为 seq=u,该序号等于前面已经传送过去的数据的最后一个字节的序号加1。这时,A进入 FIN—WAIT-1 (终止等待1)状态,等待 B的确认。TCP 规定,FIN报文段即使不携带数据,也要消耗掉一个序号。这是 TCP 连接释放的第一次挥手。

  2. B收到连接释放报文段后即发出确认释放连接的报文段,该报文段中,ACK=1,确认号为ack=u+1,其自己的序号为v,该序号等于B前面已经传送过的数据的最后一个字节的序号加1。然后B进入CLOSE—WAIT(关闭等待)状态,此时TCP服务器进程应该通知上层的应用进程,因而A到B这个方向的连接就释放了,这时TCP处于半关闭状态,即A已经没有数据要发了,但B若发送数据,A仍要接受,也就是说从B到A这个方向的连接并没有关闭,这个状态可能会持续一些时间。这是TCP连接释放的第二次挥手。

  3. A收到B的确认后,就进入了FIN—WAIT(终止等待2)状态,等待B发出连接释放报文段,如果B已经没有要向A发送的数据了,其应用进程就通知TCP释放连接。这时B发出的链接释放报文段中,FIN=1,确认号还必须重复上次已发送过的确认号,即ack=u+1,序号seq=w,因为在半关闭状态B可能又发送了一些数据,因此该序号为半关闭状态发送的数据的最后一个字节的序号加1。这时B进入LAST—ACK(最后确认)状态,等待A的确认,这是TCP连接的第三次挥手。

  4. A收到B的连接释放请求后,必须对此发出确认。确认报文段中,ACK=1,确认号ack=w+1,而自己的序号seq=u+1,而后进入TIME—WAIT(时间等待)状态。这时候,TCP连接还没有释放掉,必须经过时间等待计时器设置的时间2MSL后,A才进入CLOSED状态,时间MSL叫做最长报文寿命,RFC建议设为2分钟,因此从A进入TIME—WAIT状态后,要经过4分钟才能进入到CLOSED状态,而B只要收到了A的确认后,就进入了CLOSED状态。二者都进入CLOSED状态后,连接就完全释放了,这是TCP连接的第四次挥手。

UDP协议

UDP协议的特点及UDP头部结构

UDP协议基本介绍

UDP(User Datagram Protocol),用户数据报协议。提供一种不可靠的、低延时的数据报传输。UDP协议的主要作用是将网络数据流量压缩成数据报的形式进行传输。每个数据报的前8个字节用来包含报头信息,剩余字节则是具体的传输数据。
与TCP相比,UDP更适合发送数据量比较少,但对响应速度要求比较高的情况。
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值