网络协议 -- TCP协议(1)特性及协议首部

24 篇文章 235 订阅 ¥19.90 ¥99.00
本文介绍了TCP协议的两大特性:可靠性和面向连接,并详细解析了TCP协议首部的各项字段,包括源端口号、目的端口号、序列号、确认序列号等,阐述了TCP如何通过这些机制实现可靠性传输。
摘要由CSDN通过智能技术生成

一、TCP特性

尽管TCP和UDP都是用IP协议作为网络层,但TCP却提供和UDP完全不同的网络服务。TCP是面向连接的稳定可靠字节流服务。TCP首部的很多字段都是为了实现这2大特性而设计的。

在一个TCP连接中,仅有两方能进行彼此通信。所以说广播和多播不适用于TCP协议。

为了通过IP数据报实现可靠性传输,需要考虑很多事情,如数据的破坏、丢包、重复以及分片顺序混乱等问题。TCP通过检验和、序列号、确认序列号、重发控制、连接管理以及窗口控制等机制来实现可靠性传输。

二、TCP协议首部

摘自《TCP/IP详解卷1》中的关于TCP首部定义的图:
这里写图片描述

TCP协议的实现较UDP协议复杂太多,它的首部的各个字段的用法也比UDP首部字段复杂多,这里先对TCP首部字段的功能做个大概的介绍。

  • 16位源端口号:表示发送端端口号。传输层使用端口号来标识发送端和接收端的应用程序,而网络层是通过IP地址来标识主机,这样使用“IP地址+端口”就可以精确定位到某一台主机上的某一应用程序。
  • 16位目的端口号:表示接收端端口号。
  • 32位序列号:序列号用来标识从TCP发送端已经发送的字节数。达到最大值 2321 2 32 − 1 之后,再从0开始。
  • 32位确认序列号:确认序列号用来标识TCP接收端期望接收的下一个序列号(反过来想也就是,TCP接收端已经接受到的字节数为确认序列号减去1)。只有ACK标志位为1时,该字段才有效。只要TCP连接建立,这个字段会一直起作用,也就是说只要TCP连接建立,ACK标志位会一直为1。
  • 4位首部长度:和IP首部一样,是以4个字节(32 bit)为单位的,所以TCP首部最大长度也是15*4=60字节。若没有“选项”字段,长度固定为20字节。
  • 6位标志位:他们中的多个可以同时被设置为1。
URG 标记后面的"16位紧急指针"是否有效。
ACK 标记前面的"32位确认序号"是否有效。
PSH 接收方应该尽快的将这个报文交给上层的网络层。
RST 重建连接。
SYN 标记这个TCP段是用来同步初始序号(ISN)的。
FIN 标记发送端已经完成了发送任务。
  • 16位窗口大小:窗口大小为字节数,用于TCP的流量控制,这个值是接收端期望接受的字节数。
  • 16位校验和:和UDP类似,校验和覆盖首部和数据部分。
  • 16位紧急指针:只有前面提到的URG标记位为1时,这个字段才有效。
  • 选项:添加一些附加数据。和UDP不同,TCP的“选项”字段使用的比较多。

《TCP/IP详解 卷1:协议》在线阅读地址:http://www.52im.net/topic-tcpipvol1.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

china_jeffery

你的鼓励是我前进的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值