tcp的三次握手四次挥手

在这个例子中,首先客户端主动发起连接、发送请求,然后服务器端响应请求,然后客户端主动 关 闭连接。两条竖线表示通讯的两端,从上到下表示时间的先后顺序,注意,数据从一端传到 网络的 另一端也需要时间,所以图中的箭头都是斜的。双方发送的段按时间顺序编号为1-10, 各段中的主 要信息在箭头上标出,例如段2的箭头上标着SYN, 8000(0), ACK 1001, <mss 1024>, 表示该段中 的SYN位置1,32位序号是8000,该段不携带有效载荷(数据字节数为0),ACK位置 1,32位确认 序号是1001,带有一个mss选项值为1024。

建立连接的过程:

1.客户端发出段1,SYN位表示连接请求。序号是1000,这个序号在网络通讯中用作临时的地址,每发一个数据字节,这个序号要加1,这样在接收端可以根据序号排出数据包的正 确顺 序,也可以发现丢包的情况,另外,规定SYN位和FIN位也要占个序号,这次虽然没 发数 据,但是由于发了SYN位,因此下次再发送应该用序号1001。mss表示最大段尺寸, 如果个段太大,封装成帧后超过了链路层的最大帧长度,就必须在IP 层分片,为了避 免这种情 况,客户端声明自己的最大段尺寸,建议服务器端发来的段不要超过这个长度。

2.服务器发出段2,也带有SYN位,同时置ACK位表示确认,确认序号是1001,表示“我接收到序号1000及其以前所有的段,请你下次发送序号为1001的段”,也就是应答了客户端 的连接 请求,同时也给客户端发出个连接请求,同时声明最大尺寸为1024。

3.客户端发出段3,对服务器的连接请求进行应答,确认序号是8001。在这个过程中,客户端和服务器分别给对方发了连接请求,也应答了对方的连接请求,其中服务 器 的请求和应答在个段中发出,因此共有三个段用于建立连接,称为‘‘‘三握(three-way-  handshake)‘‘‘。在建立连接的同时,双方协商了些信息,例如双方发送序号的初始值、最大段 尺寸等。  在TCP通讯中,如果一方收到另一方发来的段,读出其中的目的端口号,发现本机并没有任何进 程 使用这个端口,就会应答一个包含RST位的段给另一方。例如,服务器并没有任何进程使用 8080端 口,我们却用telnet客户端去连接它,服务器收到客户端发来的SYN段就会应答一个RST 段,客户 端的telnet程序收到RST段后报告错误Connection refused:

数据传输的过程:

  1. 客户端发出段4,包含从序号1001开始的20个字节数据.
  2. 服务器发出段5,确认序号为1021,对序号为1001-1020的数据表示确认收到,同时请求发 送 序号1021开始的数据,服务器在应答的同时也向客户端发送从序号8001开始的10个 字节数 据,这称为piggyback 。
  3. 客户端发出段6,对服务器发来的序号为8001-8010的数据表示确认收到,请求发送序号 8011开始的数据。在数据传输过程中,ACK和确认序号是非常重要的,应用程序交给TCP协议发送的数据会暂存 在TCP层的发送缓冲区中,发出数据包给对方之后,只有收到对方应答的ACK段才知道该数据 包确 实发到了对方,可以从发送缓冲区中释放掉了,如果因为网络故障丢失了数据包或者丢失 了对方发 回的ACK段,经过等待超时后TCP协议自动将发送缓冲区中的数据包重发。

这个例子只描述了最简单的一问一答的情景,实际的TCP数据传输过程可以收发很多数据段, 虽然 典型的情景是客户端主动请求服务器被动应答,但也不是必须如此,事实上TCP协议为应 用层提供 了全双工(full-duplex)的服务,双方都可以主动甚至同时给对方发送数据。  如果通讯过程只能采用一问一答的方式,收和发两个方向不能同时传输,在同一时间只允许一 个方 向的数据传输,则称为‘‘‘半双工(half-duplex)‘‘‘,假设某种面向连接的协议是半双工的,则只 需要 一套序号就够了,不需要通讯双方各自维护一套序号,想一想为什么。

关闭连接的过程:

  1. 客户端发出段7,FIN位表示关闭连接的请求。
  2. 服务器发出段8,应答客户端的关闭连接请求。
  3. 服务器发出段9,其中也包含FIN位,向客户端发送关闭连接请求。
  4. 客户端发出段10,应答服务器的关闭连接请求。

建立连接的过程是三方握手,而关闭连接通常需要4个段,服务器的应答和关闭连接请求通常 不合 并在一个段中,因为有连接半关闭的情况,这种情况下客户端关闭连接之后就不能再发送 数据给服 务器了,但是服务器还可以发送数据给客户端,直到服务器也关闭连接为止,稍后会 看到这样的例 子。

时间: 2024-10-17 09:13:02

tcp的三次握手四次挥手的相关文章

TCP的三次握手四次挥手理解及面试题

一.TCP概述 每一条TCP连接都有两个端点,这种端点我们叫作套接字(socket),它的定义为端口号拼接到IP地址即构成了套接字, 例如,若IP地址为192.0.0.1 而端口号为8000,那么得到的套接字为192.0.0.1:8000 二.TCP报文格式 ACK.SYN和FIN这些大写的单词表示标志位,其值要么是1,要么是0:ack.seq小写的单词表示序号 同步SYN:(Synchronize ),SYN=1表示这是一个连接请求报文,或连接接受报文.SYN这个标志位只有在TCP建产连接时才

TCP/IP三次握手四次挥手

TCP三次握手所谓握手,也就是建立连接,三次过程.三次握手旨在连接到服务端的指定端口,进行通信.建立一个TCP连接,需要向客户端和服务端发送三个包.其中包含同步序列号和确认号以及TCP窗口大小的信息交换.一般触发握手在socket中都是connect()函数触发的第一次握手:客户端发送TCP请求, (SYN标记位置1个包,SYN=1,ACK=0 也就是带有SYN标记的TCP包,初始序列号为X,保存在包头的序列号中). 表示客户端需要建立一个TCP连接,这是握手中的第一不,发送请求.第二次握手:服

TCP连接 三次握手 四次挥手

前言: TCP协议是面向连接.安全可靠.基于字节流的传输层协议,在进行http协议访问时就用到了tcp连接.在建立TCP连接时需要经历三次握手,断开连接时需要经历四次挥手.在此进行记录. 内容: TCP三次握手 第一次握手:由客户端发起,客户端生成一个SYN,以及一个随机数标记数X,然后将随机标记数X和SYN发送为服务端,此时客户端进入SYN_SENT状态,等待服务端响应. 第二次握手:服务端接收到SYN后得知客户端请求连接,然后服务端将SYN和ACK都置为1,并将ack=X+1,再生成一个随机

TCP/IP三次握手 四次挥手

三次握手: 四次挥手:

socket的TCP的三次握手/四次挥手

第一次握手:客户端尝试连接服务器,向服务器发送syn包(同步序列编号Synchronize Sequence Numbers),syn=j,客户端进入SYN_SEND状态等待服务器确认 第二次握手:服务器接收客户端syn包并确认(ack=j+1),同时向客户端发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态 第三次握手:第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLIS

TCP 协议 ---- &quot;三次握手,四次挥手&quot;

一.TCP 协议 1.概念:TCP协议,即 传输控制协议.它是面向连接.可靠的传输层协议. 2.特点:工作在 传输层:每一条TCP连接只能是点对点的:面向连接.可靠性:提供全双工通信:基于字节流. 3.TCP 数据报格式:   TCP 基于 字节流 源端口号.目的端口号:各占 2字节(16位) 序号:4字节 范围[0,2^32 - 1],使用mod/(2^32)计算 URG:紧急  1 紧急指针字段有效            ACK:确认  1 确认字段有效 PSH:推送  两应用进行交互,一方

关于tcp/ip的一场美好的邂逅(三次握手四次挥手)

基于对tcp/ip的的三次握手,四次挥手不是很了解,所以花了一点时间查询了相关知识,并对其知识点进行了汇总,并且给自己理了下记忆思路. 三次握手 ① 第一次握手 客户端发送请求(syn:synchronization),并选择一个初始化序号(seq:sequence) syn=1;seq=x 客户端状态变为(syn-sent:synchronization_sent) ② 第二次握手 服务器做出响应:listen---->syncrcvd(synchronizationrecieved); 从监

重学TCP/IP协议和三次握手四次挥手

计算机网络体系结构 在计算机网络的基本概念中,分层次的体系结构是最基本的.计算机网络体系结构的抽象概念较多,在学习时要多思考.这些概念对后面的学习很有帮助. 网络协议是什么? 在计算机网络要做到有条不紊地交换数据,就必须遵守一些事先约定好的规则,比如交换数据的格式.是否需要发送一个应答信息.这些规则被称为网络协议. 为什么要对网络协议分层? 简化问题难度和复杂度.由于各层之间独立,我们可以分割大问题为小问题. 灵活性好.当其中一层的技术变化时,只要层间接口关系保持不变,其他层不受影响. 易于实现

wireshark抓包图解-tcp三次握手四次挥手详解/

http://www.seanyxie.com/wireshark%E6%8A%93%E5%8C%85%E5%9B%BE%E8%A7%A3-tcp%E4%B8%89%E6%AC%A1%E6%8F%A1%E6%89%8B%E5%9B%9B%E6%AC%A1%E6%8C%A5%E6%89%8B%E8%AF%A6%E8%A7%A3/ wireshark抓包图解-tcp三次握手四次挥手详解/ tcpdump抓包命令使用方法及内容解析/