TCP/IP详解 卷1 第十七章 TCP:传输控制协议

简介: 17.2 TCP的服务 TCP提供了一种面向连接的、可靠的字节流服务。两个使用TCP的应用在彼此交换数据之前必须先建立一个TCP连接。   TCP通过下列方式来提供可靠性: 1)  应用数据被分割成TCP认为最合适发送的数据块 2)  当TCP发送一个段后,它会启动一个定时器,等待目的端确认。

17.2 TCP的服务

TCP提供了一种面向连接的、可靠的字节流服务。两个使用TCP的应用在彼此交换数据之前必须先建立一个TCP连接。

 

TCP通过下列方式来提供可靠性:

1)  应用数据被分割成TCP认为最合适发送的数据块

2)  当TCP发送一个段后,它会启动一个定时器,等待目的端确认。如果不能及时收到确认,将重发这个报文段。

3)  TCP收到数据后,它会发送一个确认。这个确认不是立即发送的,通常会推迟几分之一秒

4)  TCP将保持它首部和数据的校验和。(这是一个端到端的校验和,如果收到段的检验有错误,TCP将丢弃这个报文也不进行确认,这就会导致超时重传)

5)  TCP报文段作为IP数据报来传输,IP数据报的到达可能会失序。tcp段也就有可能会失序。所以TCP将对收到的数据进行重新排序,以正确的顺序将数据传给应用层。

6)  IP数据报会重复,TCP的接收端必须丢弃重复的数据

7)  TCP还能提供流量控制。TCP连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲区溢出

 

另外、TCP对字节流的内容不作任何解释。对字节流的解释由TCP 连接双发的应用层解释。

 

17.3 TCP的首部

TCP数据被封装在一个IP数据报中,如下:

 

 

下面是TCP首部的数据格式,如果不及任选字段,它通常是20个字节:

 

源端口和目的端口:用于寻找发端和收端应用进程。(再加上IP首部中源端目的端IP地址就可以唯一确定一个TCP连接)

序号:用来标识从TCP发端向TCP收端发送的数据字节流,它表示在这个报文段中的第一个数据字节。

确认序号:包含发送确认的一端所期望收到的下一个序号。因此,确认序号应当是上次已成功收到数据字节序号加1.(只在ACK标志为1 时确认号才有效)

首部长度:首部中32bit字的数目。4位,最多就是15*4 = 60bit。没有任选字段时,正常长度是20字节。

6个标志比特:它们中的多个可以同时被设置为1,这里先简单说明:URG(紧急指针)、ACK(确认序号有效)、PSH(接收方应该尽快将这个报文交给应用层)、RST(重建连接)、SYN(发起连接)、FIN(发送端完成发送任务)。

16位的窗口大小:用于TCP的流量控制,窗口大小为字节数,起始于确认序号字段指明的值。

16位的校验和:校验和覆盖了整个的TCP报文段:TCP首部和TCP数据。这是一个强制性字段,一定是由发端计算,收端验证

16位的紧急指针:只有在URG标志为1时才有效。这是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号

选项:最常见的可选字段是最长报文大小MSS。每个连接方通常都在通信的第一个报文段(连接时设置SYN的那个段)中指明这个选项,它表示本端所能接收的最大长度的报文段。

 

17.4 小结

TCP将用户数据打包成报文段:它发送数据后启动一个定时器;

另一端对收到的数据进行确认,对失序的数据重新排序,丢弃重复的数据

tcp提供端到端的流量控制,并计算和验证一个强制性的端到端校验和。

 

目录
相关文章
|
5月前
|
缓存 网络协议 Linux
手把手实现tcp/ip用户态协议栈,帮你实践网络知识(网络必备,面试项目)
手把手实现tcp/ip用户态协议栈,帮你实践网络知识(网络必备,面试项目)
|
2天前
|
网络协议 Java API
深度剖析:Java网络编程中的TCP/IP与HTTP协议实践
【4月更文挑战第17天】Java网络编程重在TCP/IP和HTTP协议的应用。TCP提供可靠数据传输,通过Socket和ServerSocket实现;HTTP用于Web服务,常借助HttpURLConnection或Apache HttpClient。两者结合,构成网络服务基础。Java有多种高级API和框架(如Netty、Spring Boot)简化开发,助力高效、高并发的网络通信。
|
11月前
|
消息中间件 网络协议 安全
TCP/IP 应用层常用协议
TCP/IP 应用层常用协议
291 0
|
负载均衡 网络协议 网络安全
TCP/IP:有层次的协议栈
TCP/IP:有层次的协议栈
175 0
TCP/IP:有层次的协议栈
|
网络协议
TCP/IP协议的介绍
TCP/IP协议是众多协议的统称,通过分层结构来管理。可分为七层模型或四层结构
|
网络协议 算法
【网络篇】第十二篇——TCP协议通讯流程
【网络篇】第十二篇——TCP协议通讯流程
【网络篇】第十二篇——TCP协议通讯流程
|
网络协议 网络架构
六、TCP/IP模型 和 5层参考模型
六、TCP/IP模型 和 5层参考模型
六、TCP/IP模型 和 5层参考模型
|
域名解析 网络协议
IP协议, TCP协议 和DNS 服务分别是干什么的?
大家好,我是阿萨。昨天讲解了网络四层协议[TCP/IP协议族分为哪4层?]今天我们学习下IP 协议, TCP 协议和DNS 协议分别是干什么的。
211 0
IP协议, TCP协议 和DNS 服务分别是干什么的?
|
网络协议
TCP/IP协议族有哪些?
大家好,我是阿萨。昨天我们学习了[URI 和URL 的区别是什么?]了解了URI 和URL的区别。 学习HTTP, 绕不开TCP/IP,那么TCP/IP 协议族分为哪4层?
254 0
TCP/IP协议族有哪些?
|
网络协议 网络性能优化 网络安全
网络协议报文理解刨析篇二(再谈Http和Https), 加上TCP/UDP/IP协议分析(理解着学习), 面试官都惊讶你对网络的见解(2)
网络协议报文理解刨析篇二(再谈Http和Https), 加上TCP/UDP/IP协议分析(理解着学习), 面试官都惊讶你对网络的见解(2)
网络协议报文理解刨析篇二(再谈Http和Https), 加上TCP/UDP/IP协议分析(理解着学习), 面试官都惊讶你对网络的见解(2)