我是靠谱客的博主 飞快向日葵,最近开发中收集的这篇文章主要介绍[计算机网络笔记]第三部分——传输层之TCP 报文结构 第三部分——传输层层协议,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

第三部分——传输层层协议

TCP协议:

      TCP的连接状态之在端系统存在,在网络链路上和交换机上是不知道的,因为链路上和交换机上没有到传输层的处理能力

      TCP是点对点连接的,一个连接只有两个端系统

      为了避免频繁发送TCP报文,TCP设有缓存,每次取出缓存发送,取出的缓存大小受限于MSS(最大报文段长度)

      TCP报文结构

源端口号

目标端口号

序号

确认号

首部长度(单位:4字节)

保留

URG

ACK

PSH

RST

SYN

FIN

接收窗口

互联网校验和

紧急数据指针

选项

应用层数据

         

一行为32比特,第一行和第五行是等分的(各16比特)第四行接收窗口占16比特,黄色表示TCP首部,灰色表示TCP真实数据部分

      TCP报文结构解释:

  1. 源端口号、目标端口号:用于多路分解
  2. 序号:为了TCP可靠传输而设计的,用于标识一个TCP报文,表示本TCP是从哪一个字节开始传输的
  3. 确认号:本意为确认己方已接受的字节数(在此序号之前的字节己方已经全部接受),在规律上,A对B发送的报文的确认号总是等于下一次B对A发送的序号。
  4. 首部长度:4比特,单位是4字节,也就是最多可以表示最多((2^4)-1)*4=60个字节的首部。

之所以要有首部长度,是因为TCP的首部长度是不固定的,有可选的选项字段可以加入,一般情况下可选选项为空,这时TCP首部长度是20个字节同时可以看出,因为首部长度单位是4字节,选项只能加入4字节的倍数,如果不够4字节则填充满。

  1. 保留:现在没有用到的位,有6比特
  2. URG标识:1比特,紧急指针,置1表示当前TCP报文要尽快传输,无需按照序列发送,需要配合后面2个字节的紧急数据指针使用
  3. ACK标识:1比特,确认标识,置1表明发送的是一条ACK确认报文,这时确认号才有意义
  4. PSH标识:1比特,PUSH标识,置1表示本次TCP报文要尽快推送到上层应用层,无需等待接收缓存
  5. RST标识:1比特,用于重启连接,置1表示要断开重新建立TCP连接
  6. SYN标识:1比特,用于建立连接,置1表示当前TCP报文是建立连接的报文,TCP三次握手的前两次报文中SYN都是1
  7. FIN标识:1比特,用于拆除连接,置1表示发送方要断开TCP连接,TCP四次挥手中,每一方的挥手过程(两方都要挥手)的第一个TCP报文FIN为1
  8. 接收窗口:用于协调发送方和接收方的发送速率,防止接收缓存溢出,本字段可以告知接收方发送方还可以接受多少报文(字节计算)
  9. 互联网校验和:同UDP的校验和,计算时需要计算整个TCP报文(首部+数据)的长度,16比特,相加回卷

 

最后

以上就是飞快向日葵为你收集整理的[计算机网络笔记]第三部分——传输层之TCP 报文结构 第三部分——传输层层协议的全部内容,希望文章能够帮你解决[计算机网络笔记]第三部分——传输层之TCP 报文结构 第三部分——传输层层协议所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部