首页 > 其他分享 >传输层详解-TCP建立断开连接过程、TCP和UDP封装报文格式和应用、TCP中的四种计时器)

传输层详解-TCP建立断开连接过程、TCP和UDP封装报文格式和应用、TCP中的四种计时器)

时间:2022-09-19 17:55:43浏览次数:78  
标签:断开连接 ACK 报文 TCP 发送 计时器 传输层 接收

一、传输层的概念

网络层提供点到点的连接,传输层提供端到端的连接。在网络通讯的过程中,依靠网络层达到发现对端的目的,在发现对端之后,我们需要精准的找到想要访问的进程/服务/应用,传输层提供的端口号码的概念满足了找到应用/进程这一目的。

 

 二、传输层协议

1、TCP(transmission control protocol)传输控制协议

属于面向连接的协议,在数据发送前,需要与会双方先建立连接,TCP发送的数据保证可靠性,但是传输效率低

2、UDP(user datagram protocol)用户数据报协议

在数据发送前,不需要与会双方建立连接,UDP发送的数据不保证可靠性,但传输效率高

 

三、TCP报文头部格式

TCP头部默认大小:20Byte

1、源端口号码

2、目标端口号码

3、发送数据时所携带的序列号

4、接收端接收到数据包后给予的响应报文的确认号

5、4bit的首部长度子段:20Byte

6、6bit的保留字段

7、URG位(紧急指针有效位):若想要将某段数据立即发送,则可将该段数据的最后一位的URG位置为1,表明从该段数据的第一个包至当前URG位置为1的包全部都是紧急指针位,URG=1的数据不进入缓存区,直接被用户进程所处理

8、ACK位(确认位):表明收到对端数据后的确认报文

9、PSH位:若某段数据的PSH位置为1,则表明该段数据进入缓存区后,不用等待缓存区满载在提交给用户进程处理,而是直接将欠载的缓存数据提交给用户进程处理

10、RST位:表明请求与对端重新建立连接

11、SYN位:表明请求与对方建立连接

12、FIN位:表明请求与对方断开连接

13、16位的滑动窗口:用来实现流量控制

14、首部校验和字段

 

 

四、TCP建立、断开连接过程

三次握手

1、clientA 主动向clientB 发送 SYN=1 的请求连接

2、clientB向clientA发送SYN=1的请求建立连接数据包,同时为了确认接收到了clientA的SYN,clientB将ACK=1,表明确认收到了clientA的SYN

3、Client A 给clientB回应的ACK=1的确认报文

 

TCP断开连接

四次断开

1、client A主动向clientB发送FIN=1的请求断开连接

2、ClientB首先向clientA进行ACK=1的确认响应

3、clientB也向clientA发送FIN=1的请求断开连接

4、clientA向clientB回复的ACK=1的响应报文

 

 

五、 TCP滑动窗口机制

1、TCP使用滑动窗口的概念来完成流量控制机制

方式:与会双方在TCP三次握手完成之后,首先确定接收方的缓冲区大小,之后发送方发送与接收方缓冲区大小相等的数据给对端,接收方在缓冲区满载后开始逐个处理数据包,接收方的缓冲区会被逐渐放空,此时接收方使用滑动窗口的概念来动态的通知发送方调整数据发送的大小。

 

 

 

2、TCP使用滑动窗口的概念来完成拥塞管理机制

方式:在与会双方发送数据前先建立TCP三次握手,与会双方协商今后一次性传递的窗口大小,在协商成功后,发送方发送数据,而后发送方没有收到全部的ACK响应报文,但接收方依旧称自身可接收之前协商好的窗口大小数据,此时,发送方可以确认,中间的链路出现拥塞,然后发送方自动调整一次性数据的发送大小。

 

 

 

 六、TCP中四种计时器

1、重传计时器:目的是为了控制丢失的数据段(默认是60s)。为了保证数据传送的可靠性,TCP要求接收方每收到一个数据包,就必须给发送方发送一个ACK的确认报文;若在重传计时器到时前,发送方依旧没有接收到接收方传送过来的ACK,则发送方将会重新传送上一个报文,直到发送方接收到了确认报文为止。

 

 

 

2、 坚持计时器:目的是为了防止零窗口锁死(默认是60s)。发送方向接收方传递2个窗口的数据,接收方发送ACK表明缓冲区已满,此时发送发将会开启一个坚持计时器,在坚持计时器到时前,若发送方接收到了接收方传送的后续ACK报文,则发送方复位计时器,继续传送后续报文;若在坚持计时器到时前,发送方没有接收到接收方所发送的后续ACK报文,则此时发送方将主动向接收方发送探测报文,询问是否可以接收后续报文。

 

 

3、保活计时器:目的是为了防止TCP过长的空连接(默认2小时)。若某客户端与服务器建立了TCP三次握手后,在2小时之内没有发起任何的通讯连接请求,则此时服务器将会主动的向客户端发送10个间隔75s的探测数据段,若10个探测数据段过程结束后,客户端依旧没有响应,则服务器可主动中断连接,防止一个过长的TCP连接持续占用网络及服务器资源。

 

 

4、时间等待计时器:默认时间是30s-2min,取决于不同的应用。在TCP四次断开时,若主机A在发送完最后一个ACK后立即断开连接,而此时的ACK报文主机B并没有收到,则此时会出现:主机A已经断开连接,而主机B依旧保持连接的问题。解决方案:在主机A发送完最后一个ACK后,不立即断开连接,而是等待一个时间等待计时器时间,等到主机B已经断开连接后,主机A在断开连接,保证与会双方均成功的结束通讯。

 

 

 

七、TCP的应用

 

 

八、UDP的封装格式和应用

 

 

 

 

九、TCP/IP协议栈

 

 

标签:断开连接,ACK,报文,TCP,发送,计时器,传输层,接收
From: https://www.cnblogs.com/yunjisuanchengzhanglu/p/16707054.html

相关文章

  • TCP/IP协议详解
      TCP/IP不是一个协议,而是一个协议族的统称。里面包括IP协议、IMCP协议、TCP协议。TCP/IP协议模型,包含了一系列构成互联网基础的网络协议,是Internet的核心协议。基于......
  • 0-4 测试面试题_16合并两个排序数组_17tcp和udp_18单元集成系统验收回归_19测试和开发
    面试题(除个别外)及部分解析答案来自牛客网https://www.nowcoder.com/exam/interview/以下所述内容并不是百分之百正确,仅供参考。16手写代码:合并两个排序数组Merge1......
  • 为什么tcp/ip协议没有会话层和表示层?
    先有了tcpip协议栈的实现,并应用在Unix系统中。之后才有了osi七层模型,才提出的会话层,表示层等概念。七层模型是专家讨论出的理想模型,tcpip实现模型流行起来后,已有的系统......
  • 0-2 测试面试题- 测试方法_压力测试怎么测_设计朋友圈点赞_HTTP报文段_HTTP请求报文_T
    面试题及解析答案来自牛客网https://www.nowcoder.com/exam/interview/5了解什么测试方法?测试的方法?写测试用例的方法?分析测试点的方法?测试是个大工程,很多环节,具......
  • 第 17 题:A、B 机器正常连接后,B 机器突然重启,问 A 此时处于 TCP 什么状态
    如果A与B建立了正常连接后,从未相互发过数据,这个时候B突然机器重启,问A此时处于TCP什么状态?如何消除服务器程序中的这个状态?  问题定义A->B发起TCP请求,A......
  • 第 16 题:谈谈你对TCP三次握手和四次挥手的理解
     男:我要挂了哦女:等哈,我还要敷面膜女:我敷完了,现在可以挂了男:我舍不得挂,你挂吧女:好吧,我挂了男:等了2MSL听见嘟嘟嘟的声音后挂断 ......
  • tcp
    TCP头部格式:双方端口号,序列号,确认应答号,标志位(ACK,SYN,FIN),窗口大小序列号:初始序列号为时间循环值,每加一次数据,就累加这次数据字节数,用于解决网络包乱序确认应答号:下一......
  • Linux Kernel TCP/IP Stack|Linux网络硬核系列
      介绍Linux网络技术中最核心的部分--TCP/IP协议栈 。我们先看一下抽象的网络协议栈模型  再按分层思想看Linux内核协议栈实现框架  1.socketlayer ......
  • TCP/UDP协议
    TCP/IP介绍    TransmissionControlProtocol/InternetProtocol传输控制协议/因特网互联协议TCP/IP是一个ProtocolStack,包括TCP、IP、UDP、ICMP、RIP、TELNE......
  • 传输层
    一、TCP/IP和OSI模型的比较相同点:两者都是以协议栈的概念为基础;协议栈中的协议彼此相互独立下层对上层提供服务不同点:OSI是先有模型;TCP/IP是先有协议,......