网络学习-传输层之TCP协议(报头解析)

与UDP不同,TCP人则如其名,是一个”传输“,”发送“,”通信进行” 控制 “ 的“ 协议 ”。

TCP与UDP区别想当大,它充分体现了数据传输时的各种控制功能。可以进行丢包时的重发控制,还可以对乱序的分包进行顺序控制,这些在UDP都没有,另外,TCP还是一种面向连接的协议,只有在确认通信对端存在时才会发送数据。从而可以控制流量的浪费。实现网络拥塞控制。

根据TCP这些可靠性机制,即使在IP这种无连接的网络上也能实现可靠性传输。


由于UDP没有连接控制,,即使对端从一开始就不存在,或者中途断开网络,数据包还是能够发送出去,(在这种情况下,TCP协议是无法将数据包发送出去的。)
当ICMP的错误返回时,有时也实现不了重发机制。

面向连接名词解释:

连接是指各种设备,线路,或网络为了了两个进程相互传递消息而专有的,虚拟的通信线路,也叫虚拟电路。

一旦建立连接,进行通信的应用程序只使用这个通信线路发送和接受数据,就可以保障信息的传输。TCP则负责建立控制连接的建立,保持,断开等管理工作。


TCP的目的及其目的

为了IP数据报实现可靠性传输,需要考虑很多事情,例如数据的破坏,丢包,重复以及分片顺序混乱等问题,如不能解决这些问题,可靠性传输也就无从谈起。

TCP通过检验和,序列号,确认应答,重发控制,连接管理以及窗口控制等机制实现可靠性传输。


TCP协议报头

这里写图片描述

源/目的端口号:表示数据从哪个进程来,到那个进程去。均是16位字段

32位序列号:TCP为每个字节都进行了编号,即为序列号,指发送数据的位置,
序列号不会从0或1开始,而是建立连接时由 计算机随机生成的数字作为初始值,然后将发送过去的字节数累加到初始值上,表示数据的位置。此外,在建立连接和断开连接时发送的SYN包和FIN包虽然不携带任何数据,但也会作为一个字节增加对应的序列号。

确认序列号:32位,指已收到确认应答前一位为止的数据。发送端接受到这个确认应答以后,可以认为以前的数据都已经被正常接受。

关于确认序列号的四点:

- 属于确认机制,表示主机A请求,主机B应答,简称请求应答

- 虽然有序列号为数据编号,保证有序传输,凡是接受方可能接受到的数据是乱序的,此时确认序列号可以对数据进行排序,确保数据按需到达。
- 超时重传的支撑
- 批量发送,窗口滑动协议的支撑。提高效率。

关于序列号与确认序列号,如下图所示(两台主机正在进行数据传输)
这里写图片描述

4位首部长度:表示TCP有多少个32bit(有多少个四字节);TCP头部最大长度是15*4=60字节。默认长度20个字节。

该字段表示TCP所传输的数据从TCP的包的那个位开始计算。
如上图中,如果TCP首部长度为20个字节,则4位首部长度可以设置为5。反之,如果该字段的值为5,那说明TCP包从最开始到20字节处,全是TCP首部,余下的部分是TCP承载的有效数据。

保留位:占 6个bit,便于扩展新项目。一般设置为0,但即使收到的包在该位上不为0,此包也不会被丢弃。

控制位:字长6bit。每一位从左到右,分别是URG , ACK , PSH , RST , SYN, FIN .

标志位作用备注
URG标识紧急指针是否有效,表示包中是否有紧急数据需要处理。有效置为1,否则置为0;
ACK确认序列号是否有效该位为1时,表示确认应答的字段有效,TCP规定除了最初建立连接时的SYN报之外,该位必须为1
PSH表示需要将收到的数据立即交付给上层应用协议还是暂时缓存。为1,交付上层,为0,暂时缓存
RST表示TCP连接中出现异常,必须强制断开连接。我们把携带RST有效标志的报文成为复位报文段。例如一个没有被使用的端口,发来请求,也无法进行通信。此时就可以返回一个将RST设置为1的包。
SYN请求建立连接。我们把携带SYN的报文称为同步报文段SYN为1.表示希望建立连接,并在其序列号的字段设置初始值
FIN有效时,表示今后不会有数据发送,希望断开连接当通信结束,双方互换FIN为1的TCP报文段

窗口大小:16位字节大小。填写本端接受 缓冲区大小,表明接受字段的能力。

检验和:16位大小。是一种由路由内存故障或是程序漏洞导致数据是否有被破坏的检查。

紧急指针:16位。只在URG为1时有效。该字段的数值表示本报文中紧急数据的指针。从数据开始的首位到紧急指针所指示的位置为紧急数据。

选项:用于提高TCP的性能。改善吞吐量,决定建立连接时最大长度的情况等等。

因为根据首部长度的控制,所以该字段的长度最高可达40字节。另外,选项字段应尽量调节为32bit的整数倍。

数据段:表示有效数据。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值