TCPTransmission Control Protocol)------传输控制协议

      学习传输层协议,要知道端口号是什么,端口号主要是用来区分不同的网络服务。端口号有公知端口号(0~1023)和动态端口号(>1024),但括号内的范围并不绝对。常见的公知端口号有FTP(21、20)------文件传输;HTTP(80)------超文本传输;SMTP(25)------邮件;Telnet(23)------远程登录;TFTP(69)------简单文本传输;HTTPS(443)------安全超文本传输;在封装数据时,如果网络服务对应端口号为公知端口号,则source port为该公知端口号。若网络服务对应的端口号为动态端口,则source port为随机选择的一个较大的值。

      下面介绍TCP报文格式

浅谈TCP协议

TCP段首部长度在20~60字节之间,由定长部分(20字节)和变长部分(0~40字节)组成

source port------源端口,16bits

destination------目的端口,16bits

sequence number------序号字段,16bits,TCP传输的数据流中每个字节都被标上了序号,序号字段指的是报文段发送的第一个字节的序号。

ackonwledgment number------确认号,16bits,是希望收到的对方下一个报文段的第一个字节的序号。例如,上次成功接收了字节序号为1001的序号字段,则返回的的ackonwledgment number为1002。只有ACK标识为1,该字段才有效。

header length------头部长度,4bits(data offset------数据偏移,4bites,也表示首部长度)

reserved------保留字段,6bits,必须填0。

URG------紧急指针有效标识,1bit,告诉系统此报文段中有紧急数据,应尽快传送。和urgent point配合使用,当URG=1时,urgent point 有效。urgent point指出本报文段中紧急数据的最后一个字节的序号。

ACK------acknowledgment number有效标识,1bit,只有当ACK=1时才有效。

PSH------1bit,标识接收方尽快将这个报文给应用层,而不再等待缓存满了之后再向上交付。PSH=1时有效。

RST------重建连接标识,1bit,当RST=1时,表明TCP连接中出现严重错误,必须释放连接,再重新建立连接。

SYN------同步序号标识,1bit,用来发起连接,SYN=1表示这是一个连接请求或连接接收请求。

FIN------发端完成任务标识,用来释放一个连接。1bit,FIN=1有效。

window------窗口,用于TCP流量控制

checksum------校验字段,16bits,包括TCP首部和TCP数据。一定是由发端负责计算和存储,并由收端进行验证。在计算校验和时,要在TCP报文段的前面加上12字节的伪首部。

urgent point------紧急指针,16bits,只有当URG=1时才有效。紧急数据放在本报文段的最前面。

options------选项字段,选项表结束、无操作、最大报文段长度、窗口扩大因子、时间戳

padding------填充字段,用来补位,使整个首部长度是4字节的整数倍。

data------TCP负载

 

备注:

URG和PSH的区别:PSH位在telnet中用的较多,当键入一个命令时,总希望能快速响应,PSH置1,不用等待更多的数据形成TCP段,接收方根据PSH=1立即将缓存区的数据送入应用程序。URG置1,可以不用排队发送数据,例如发现前面发送的数据有错误需要紧急停止时,可以发送URG置1的报文,紧急数据将被插入到前面进行发送。

计算校验和时,引入伪首部的目的是验证TCP数据段是否正确的信宿端。由于TCP数据段本身只包含源端口、目的端口,不能构成完整的信宿端应用进程的标识,所以通过伪首部来补充其他信息。TCP伪首部信息是来自IP数据报的首部。TCP的发送方和接收方在计算校验和时都会加上伪首部信息,若接收方验证了校验和时正确的,则发送正确,否则数据发送错误。在TCP/IP协议栈中,TCP校验和是保证数据正确性的唯一手段。

                                                                                               TCP伪首部格式

浅谈TCP协议

或许存在错误,还请各位看客多多指教! 

相关文章:

  • 2022-12-23
  • 2021-12-07
  • 2021-07-15
  • 2021-10-10
  • 2021-12-05
  • 2022-12-23
  • 2021-04-29
猜你喜欢
  • 2021-07-28
  • 2021-12-10
  • 2021-06-18
  • 2022-12-23
  • 2022-12-23
  • 2021-09-12
  • 2021-11-05
相关资源
相似解决方案