TCP协议的首部结构

          TCP尽管是面向字节流的,和UDP面向数据报不一样,但是TCP传送的每一个数据单元却是报文段。每一个TCP报文段分为首部和数据两部分,首部的各个字段都很好的体现了TCP的每个功能。TCP报文段首部的前20个字节是固定的,后面有4*n(整数)个字节是根据需要可选的,所以TCP首部的最小长度是20字节。首部字段分别是:源端口、目的端口、序号、确认号、数据偏移、保留、紧急URG、确认ACK、推送PSH、复位RST、同步SYN、终止FIN、窗口、检验和、紧急指针、选项。

加分回答

首部字段的意义分别是:

  • 源端口:占2字节。
  • 目的端口:占2字节。
  • 序号:占4字节。序号范围是[0,2^23-1],共2^23(4 294 967 296)个序号。当序号达到2^23-1时候,下一个序号就回到0。TCP是面向字节流的,在一个TCP连接中传送的字节流的每一个字节都按顺序编号。整个TCP的起始序号必须在建立时确认,首部中的序号字段指的是这个报文段所发送的数据的第一个字节的序号。例如报文序号是101,携带的数据共100个字节,所以这个报文的第一个字节序号是101,最后一个字节的序号是200。下一个报文段就从201开始。
  • 确认号:占4字节。是希望收对方下一个报文段的第一个数据字节的序号。例如序号中讲的,序号就是201。
  • 数据偏移:占4位。指出TCP数据的起始位置和TCP报文段的起始处相差多少。也可以理解为数据偏移就是TCP首部字段的长度。
  • 保留:占6位。保留为以后使用,当前置为0。
  • 紧急URG:当URG=1时,说明紧急指针字段有效。告诉系统这个报文中有紧急的数据,应该尽快处理,优先级最高。
  • 确认ACK:仅当ACK=1时,确认号字段才有效。当ACK=0时,确认号无效。TCP中有规定在TCP连接建立之后,所有传送的报文段ACK都必须为1。
  • 推送PSH:发送方将PSH置为1后,表示当前命令之后希望收到对方的相应,推送很少用,不做深究。
  • 复位RST:当RST=1时,表示TCP中出现严重的差错,必须释放连接然后再重新建立连接。RST=1还可以用来拒绝一个恶意的报文段。
  • 同步SYN:在连接建立时用来同步序号。当SYN=1并且ACK=0时,表示这是一个连接请求报文段。若对方同意连接,就应该在响应报文中使SYN=1并且ACK=1。所以SYN=1表示这是一个连接请求或者连接接受报文。
  • 终止FIN:用来释放一个TCP连接。当FIN=1时,表示报文段的发送方的数据已经发送完毕,要求释放连接。
  • 窗口:占2字节。指的是发送这个报文段那方的接收窗口。窗口值告诉对方从确认号算起,接收方目前允许对方发送的数据量,因为接收方的数据缓存空间是有限的。
  • 检验和:占2字节。检验和字段的检查范围包括首部和数据两个部分。和UDP一样需要在首部之前添加12字节的伪首部,算法这里不做深究。
  • 紧急指针:占2字节。只有URG=1时才有用,表示这个报文段中紧急数据的字节数。
  • 选项:长度可变,最长可达40字节,当没有选项时,TCP首部长度就是20字节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值