传输层协议tcp、udp

传输层协议tcp、udp

tcp协议

tcp头部格式

TCP/ip协议族的传输层协议主要有两:

tcp

udp:用户数据协议

TCP协议
  • tcp是面向连接的、可靠进程到进程通信的协议
  • tcp提供全双工服务,即数据可在同一时间双向传输
TCP端口号

FTP 21 20

HTTP 80

SSH 22

Telnet 23

SMTP 25

TCP报文段
  • tcp将若干个字节构成一个分组,叫报文段
  • tcp报文段封装在ip数据报中

在这里插入图片描述

第一行字端:源端口和目的端口字段
  • 源端口(Source Port):源计算机上的应用程序的端口号,占16 位(bit)。
  • 目的端口(Destination Port):目标计算机的应用程序端口号,占16 位(bit)。
第二行字段:序列号字段
  • 序列号seq(Sequence Number):占(32bit)它表示本报文段所发送数据的第一个字节的编号。在 TCP 连接中,所传送的字节流的每一个字节都会按顺序编号。
  • 当SYN标记不为1时,这是当前数据分段第一个字母的序列号;
  • 如果SYN的值是1时,这个字段的值就是初始序列值(ISN),用于对序列号进行同步。这时,第一个字节的序列号比这个字段的值大1,也就是ISN加1。
第三行:确认号字段
  • ACK确认号:(Acknowledgment Number,ACK Number):占 32 位。它表示接收方期望收到发送方下一个报文段的第一个字节数据的编号。其值是接收计算机即将接收到的下一个序列号,也就是下一个接收到的字节的序列号加1。
第四行:
数据偏移字段
  • 首部长度(Header Length):数据偏移是指数据段中的“数据”部分起始处距离 TCP 数据段起始处的字节偏移量,占 4 位。其实这里的“数据偏移”也是在确定 TCP 数据段头部分的长度,告诉接收端的应用程序,数据从何处开始。
  • 理解:“数据偏移”是指TCP 数据段头部分的长度,告诉接收端的应用程序,需要处理的数据从何处开始(去掉头部)
保留字段
  • 保留(Reserved):占 4 位。为 TCP 将来的发展预留空间,目前必须全部为 0
标志性字段
  • CWR(Congestion Window Reduce):拥塞窗口减少标志,用来表明它接收到了设置 ECE 标志的 TCP 包。并且,发送方收到消息之后,通过减小发送窗口的大小来降低发送速率

  • 理解:告知发送方,我方拥堵,你降低一下窗口发送速率

ECE==ECN(ECN Echo):用来在 TCP 三次握手时表明一个 TCP 端是具备 ECN (显式拥塞通告)功能的。在数据传输过程中,它也用来表明接收到的 TCP 包的 IP 头部的 ECN 被设置为 11,即网络线路拥堵。

  • 理解:数据传输过程中,TCP包头部的ECN字段设置为11,表示网络线路拥堵URG(Urgent):
  • 表示本报文段中发送的数据是否包含紧急数据。URG=1 时表示有紧急数据。当 URG=1 时,后面的紧急指针字段才有效

  • 理解:标记是否有紧急数据,URG=1后面的紧急指针字段(Urgent Pointer)才有效
  • ACK:表示前面的确认号字段是否有效。ACK=1 时表示有效。只有当 ACK=1 时,前面的确认号字段才有效。TCP 规定,连接建立后,ACK 必须为 1

  • 理解:ACK 必须为 1,表示TCP 确认号(Acknowledgment Number,ACK Number)有效
SYN:在建立连接时使用,用来同步序号。
  • 当 SYN=1,ACK=0 时,表示这是一个请求建立连接的报文段;
  • 当 SYN=1,ACK=1 时,表示对方同意建立连接。
  • SYN=1 时,说明这是一个请求建立连接或同意建立连接的报文。只有在前两次握手中 SYN 才为 1。
FIN:标记数据是否发送完毕。如果 FIN=1,表示数据已经发送完成,可以释放连接。
窗口大小字段
  • 窗口大小(Window Size):占 16 位。它表示从 Ack Number 开始还可以接收多少字节的数据量,也表示当前接收端的接收窗口还有多少剩余空间。该字段可以用于 TCP 的流量控制。

  • 理解:TCP流量控制,表示目前还有多少空间,能接收多少数据量
第五行:TCP校验和字段
  • 校验位(TCP Checksum):占 16 位。它用于确认传输的数据是否有损坏。发送端基于数据内容校验生成一个数值,接收端根据接收的数据校验生成一个值。两个值必须相同,才能证明数据是有效的。如果两个值不同,则丢掉这个数据包。Checksum 是根据伪头 + TCP 头 + TCP 数据三部分进行计算的。

  • 理解:校验传输过程中数据是否损坏,丢包等

  • 紧急指针(Urgent Pointer):仅当前面的 URG 控制位为 1 时才有意义。它指出本数据段中为紧急数据的字节数,占 16 位。当所有紧急数据处理完后,TCP 就会告诉应用程序恢复到正常操作。即使当前窗口大小为 0,也是可以发送紧急数据的,因为紧急数据无须缓存。

  • 理解:URG 控制位为 1 ,表示紧急数据字节数,此时会优先处理紧急数据,窗口大小为 0,也是可以发送紧急数据的,因为紧急数据无须缓存。

第六行:可选字段
  • 选项(Option):可以自定义头部字段,长度不定,但长度必须是 32bits 的整数倍
第七行:TCP数据
  • 数据部分(可以不发送任何数据)

tcp三次握手

SYN 连接 ACK确认

tcp建立连接的过程称为三次握手

1主机A发送syn(1,seq=x)报文

2服务器A确认:发送syn(1)+ACK(1,Ack=x+1)报文回去(收到回应请求报文)

3主机A在发送ACK(1.Ack=y+1,seq=x+1)报文_

第一次握手:建立连接时,客户端发送syn包(syn=x)到服务器,并进入****SYN_SENT****状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入****SYN_RECV****状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入****ESTABLISHED****(TCP连接成功)状态,完成三次握手。
在这里插入图片描述

TCP流量控制

tcp四次握手

FIN 结束 ACK确认 seq 序号 ack

1 主机A发送FIN/ACK(FIN=1,ACK=1,Seq=b)

2 服务器A发送FCK报文(ACK=1,ack=b+1)

3 服务器A发送FIN/ACK/ack报文(FIN=1,ACK=1,ack=b+1,seq=c)

4 主机A发送ACK报文(ACK=1,ack=c+1,seq=c+1)

  • 1)客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止等待1)状态。 TCP规定,FIN报文段即使不携带数据,也要消耗一个序号。
  • 2)服务器收到连接释放报文,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT(关闭等待)状态。TCP服务器通知高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。这个状态还要持续一段时间,也就是整个CLOSE-WAIT状态持续的时间。
  • 3)客户端收到服务器的确认请求后,此时,客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(在这之前还需要接受服务器发送的最后的数据)。
  • 4)服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,ack=u+1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w,此时,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。
  • 5)客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态。注意此时TCP连接还没有释放,必须经过2∗∗MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。
  • 6)服务器只要收到了客户端发出的确认,立即进入CLOSED状态。同样,撤销TCB后,就结束了这次的TCP连接。可以看到,服务器结束TCP连接的时间要比客户端早一些。

在这里插入图片描述

tcp半关闭

udp协议

udp头部格式

UDP协议
  • 无连接、不可靠的传输协议
  • 花费的开销小、效率高
UDP报文的首部格式

源端口(16)+目标端口(16)

UDP长度(16)+UDP校验和(16)

UDP长度:用来支出UDP的总长度,为首部加上数据

校验和:用来完成对UDP数据的差错校验,他是UDP协议提供的唯一可靠机制

比较小的数据用UDP更好

在这里插入图片描述

UDP常见的端口号

69 TFTP 简单文件传输协议

111 RPC 远程过程调用

123 NTP 网络时间协议

162/162 SNMP 简单网络管理协议

67、68 DHCP 动态主机配置协议

53 DNS 域名解析服务

udp传输过程

使用UDP传输数据时,由应用程序根据需要提供报文到达确认、排序、流量控制等功能

UDP不提供重传机制,占用资源小、处理资源块

传输层如何能够准确将数据交给特定应用

答:端口号

111 RPC 远程过程调用

123 NTP 网络时间协议

162/162 SNMP 简单网络管理协议

67、68 DHCP 动态主机配置协议

53 DNS 域名解析服务

udp传输过程

使用UDP传输数据时,由应用程序根据需要提供报文到达确认、排序、流量控制等功能

UDP不提供重传机制,占用资源小、处理资源块

传输层如何能够准确将数据交给特定应用

答:端口号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值