首页 > 其他分享 >TCP

TCP

时间:2023-03-11 21:46:47浏览次数:40  
标签:报文 TCP 序列号 连接 服务端 客户端

参考博文

https://juejin.cn/post/7138287951288467469

https://www.elecfans.com/d/1887056.html

java3y《对线面试官》

什么是TCP

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793 [1] 定义。
TCP旨在适应支持多网络应用的分层协议层次结构。 连接到不同但互连的计算机通信网络的主计算机中的成对进程之间依靠TCP提供可靠的通信服务。TCP假设它可以从较低级别的协议获得简单的,可能不可靠的数据报服务。 原则上,TCP应该能够在从硬线连接到分组交换或电路交换网络的各种通信系统之上操作。

--百度百科

 目的是在跨越多个网络通信时,为两个通信端点之间提供一条具有下列特点的通信方式:

(1)基于流的方式;

(2)面向连接;

(3)可靠通信方式;

(4)在网络状况不佳的时候尽量降低系统由于重传带来的带宽开销;

(5)通信连接维护是面向通信的两个端点的,而不考虑中间网段和节点。

 

TCP报文

参考:电子发烧友https://www.elecfans.com/d/1887056.html

TCP协议有着自己的数据包格式,这里把TCP的数据包称为报文段(segment),TCP报文段封装在IP数据报中发送,TCP报文段由TCP首部和TCP数据区组成,首部区域包含了连接建立与断开、数据确认、窗口大小通告、数据发送相关的所有标志和控制信息。如下图:

 

 序列号:在初次建⽴连接的时候,客户端和服务端都会为「本次的连接」随机初始化⼀个序列号。(纵观整个TCP流程中,序列号可以⽤来解决⽹络包乱序的问题)

确认号:该字段表示「接收端」告诉「发送端」对上⼀个数据包已经成功接收(确认号可以⽤来解决⽹络包丢失的问题)

标记位:SYN为1时,表示希望创建连接。ACK为1时,确认号字段有效。FIN为1时,表示希望断开连接。RST为1时,表示TCP连接出现异常,需要断开。

 

 

TCP三次握手

TCP三次握⼿的过程其实就是在:确认通信双⽅(客户端和服务端)的序列号

第一次握手

最开始,客户端和服务端都处于close状态

服务器主动监听某个端口,处于listen状态

客户端随机生成序列号,将标志位置为SYN(意味着要连接),然后把该报文发送给服务端,自己进入SYN_SEND状态

 

 

第二次握手

服务端接收到客户端请求后,自己也初始化对应的序列号(server_isn),在确认号字段里填上client_isn+1(相当于告诉客户端,已经收到发过来的序列号了)

并且把SYN和ACK标记位都置为1

把该报文发送给客户端,服务端状态变为SYN-REVD 状态

 

 

客户端收到服务端发送的报文后,明白服务端已经收到自己的序列号(通过确认号可以知道),并且接收到了服务端的序列号(server_isn)

客户端需要告诉服务端自己收到了服务端发送过来的序列号,在确认号上填写server_isn+1,标记ACK为1

 

客户端发送报文后,进入ESTABLISHED状态,而服务端接收到客户端的报文后,也进入ESTABLISHED状态   总的来说就是,双方生成自己的序列号并发送给对方看对方能不能接收到,如果接收到就给个通知。该过程可以看到双方都有发送和接收能力。  

可以是两次吗?

两次握手只能保证客户端的序列号被服务端成功接收,而服务器无法确认自己的序列号是否被客户端成功接收,所以是不行。

 

 

       

标签:报文,TCP,序列号,连接,服务端,客户端
From: https://www.cnblogs.com/deity-night/p/17207048.html

相关文章

  • TCP/UDP
    一、概述接着温顾TCP/UDP UDP(用户数据报):1.无连接2.不可靠传输协议3.传输速率比较快4.首部字段较少5.应用场景......
  • [调试工具]如何使用tcpdump抓包
    如何使用tcpdump抓包打开一个终端,输入以下命令来安装tcpdump(如果您已经安装了tcpdump,请跳过这一步):sudoaptinstalltcpdump输入以下命令来查看您的网络接口的名称:ipl......
  • 流媒体传输协议(rtp/rtcp/rtsp/rtmp/mms/hls)
    常用的流媒体协议主要有HTTP渐进下载和基于RTSP/RTP的实时流媒体协议两类。在流式传输的实现方案中,一般采用HTTP/TCP来传输控制信息,而用RTP/UDP来传输实时多媒体数据。1......
  • tcp/ip协议族
    TCP/IP协议族大体上分为三部分:1.网络协议(IP协议,网络层)2.传输协议(TCP/UDP协议,传输层)3.应用协议(FTP协议、HTTP协议,应用层) 在TCP/IP网络中,每个主机都有......
  • 面试复习总结-tcp三次握手四次挥手
    1.TCP/IP协议:应用层:HTTPFTPTFTPHTTPS会话层表达层传输层:TCPUDP网络层:IPICMPARP 数据链路层:PPP,PPTP物理层:帧 tcp三次握手四次挥手: 1.客户端发送连接......
  • tcpdump使用指南
    全网最详细的tcpdump使用指南 今天要给大家介绍的一个Unix下的一个 网络数据采集分析工具,也就是我们常说的抓包工具。与它功能类似的工具有wireshark,不同的......
  • 计算机基础_网络协议2.TCP、HTTP、HTTPS
    三次握手和四次挥手详细原理,为什么要使用这种机制?当进行第一次握手,网络不好可能会堵塞,所以连接的请求并没有到达服务器端;但是tcp连接有超时重传的机制,所以再一次发送请求,......
  • TCP通信聊天服务端和客户端(C/C++语言开发)附完整源码
    距离上次学Python写的Python实现简单聊天室已经过去好久了,现在学c++又写了一遍,其实过程差不多,无非是语法的变化,目前仅实现最简单的一对一的通信,然后改就是了,接下来应该是......
  • 网络通信——TCP “三次握手“、“四次挥手“ 详解
    前言TCP三次握手和四次挥手是面试题的热门考点,它们分别对应TCP的连接和释放过程1.TCP通信包含那几步?TCP通信过程包括三个步骤:建立TCP连接通道,传输数据,断开TCP连接通道......
  • 国标 华为交换机 RTCP抓包过程记录
    场景雄安项目从下级推送UDP音视频数据流到上级,排查过程中,发现RTCP控制数据丢失了排查过程1确定本地服务器已经发送出去抓包2直连交换机抓包有接收抓包指令capture-packet ......