对TCP/IP协议的一些看法(10):TCP协议(2)

上文讲了下TCP协议的整体架构,今天介绍下TCP协议著名的三次握手和四次握手。

服务器和客户端在进行通信前要先建立连接,是通过三次握手完成的,从而确保通信的可靠性。

三次握手的步骤如下图所示:

假设A为客户端,B为服务器,A主动与B进行通信,步骤如下:

1.A发送SYN报文,并标记SEQ=x,ACK=0

2.B接收到SYN报文后,若可以通信,就发送确认报文,并标记SEQ=y,ACK=x+1

3.A收到确认报文后,发送确认报文,标记SEQ=x+1,ACK=y+1

这样两者就建立了连接,其中存在的状态包括

端点 状态 描述
A,B CLOSED 连接关闭,没有正在进行的通信
B LISTEN 监听状态
B SYN RCVD B收到连接请求,但未确认
A SYN SENT A发送一个连接请求,等待确认
A,B ESTABLISHED 两者建立连接

四次握手关闭链接如下如所示:

具体的步骤如下:

1.A发送FIN报文,标记SEQ=M

2.B收到FIN报文后,发送确认报文,标记SEQ=M+1

3.B之后也发送FIN报文,标记SEQ=N

4.A收到FIN报文后,发送确认报文,标记SEQ=N+1

至此双方就断开连接,其中涉及的状态包括

端点 状态 描述
A FIN WAIT 1 发送关闭请求,等待确认
A FIN WAIT 2 收到B的确认请求,等待B的FIN报文
A,B CLOSING 双方同时尝试关闭,等待对方确认
B CLOSE WAIT 收到A的关闭请求,已经确认
A TIME WAITED 完成双向关闭,等待所有分组死掉
B LAST ACK 等待最后一个确认

之所以关闭的时候要进行4次握手,是因为TCP通信是全双工的,需要两者都进行确认。

时间: 2024-08-01 09:54:52

对TCP/IP协议的一些看法(10):TCP协议(2)的相关文章

TCP/IP协议栈与数据包封装+TCP与UDP区别

ISO制定的OSI参考模型的过于庞大.复杂招致了许多批评.与此对照,由技术人员自己开发的TCP/IP协议栈获得了更为广泛的应用.如图2-1所示,是TCP/IP参考模型和OSI参考模型的对比示意图. TCP/IP参考模型的层次结构 TCP/IP协议栈是美国国防部高级研究计划局计算机网(Advanced Research Projects Agency Network,ARPANET)和其后继因特网使用的参考模型.ARPANET是由美国国防部(U.S.Department of Defense,Do

TCP/IP详解学习笔记(4)-ICMP协议,ping和Traceroute

转自:http://blog.csdn.net/goodboy1881/article/details/670761 ———————————————————————————————————————————————————————— 1.IMCP协议介绍 前面讲到了,IP协议并不是一个可靠的协议,它不保证数据被送达,那么,自然的,保证数据送达的工作应该由其他的模块来完成.其中一个重要的模块就是ICMP(网络控制报文)协议. 当传送IP数据包发生错误--比如主机不可达,路由不可达等等,ICMP协议将

TCP/IP学习笔记(3)-----------TCP/IP协议详解

1.TCP/IP协议栈 四层模型 TCP/IP这个协议遵守一个四层的模型概念:应用层.传输层.互联层和网络接口层. 网络接口层 模型的基层是网络接口层.负责数据帧的发送和接收,帧是独立的网络信息传输单元.网络接口层将帧放在网上,或从网上把帧取下来. 互联层 互联协议将数据包封装成internet数据报,并运行必要的路由算法. 这里有四个互联协议: 网际协议IP:负责在主机和网络之间寻址和路由数据包. 地址解析协议ARP:获得同一物理网络中的硬件主机地址. 网际控制消息协议ICMP:发送消息,并报

TCP/IP模型各个层次的功能和协议

层次名称 功    能 协    议 应用层 (Application Layer) 负责实现一切与应用程序相关的功能,对应OSI参考模型的上三层 FTP(文件传输协议) HTTP(超文本传输协议) DNS(域名服务器协议) SMTP(简单邮件传输协议) NFS(网络文件系统协议) 传输层 (Transport Layer) 负责提供可靠的传输服务,对应OSI参考模型的第四层 TCP(控制传输协议) UDP(用户数据报协议) 网际层 (Inter-network Layer) 负责网络间的寻址.

TCP/IP详解学习笔记(9)-TCP协议概述

终于看到了TCP协议,这是TCP/IP详解里面最重要也是最精彩的部分,要花大力气来读.前面的TFTP和BOOTP都是一些简单的协议,就不写笔记了,写起来也没啥东西. TCP和UDP处在同一层---运输层,但是TCP和UDP最不同的地方是,TCP提供了一种可靠的数据传输服务,TCP是面向连接的,也就是说,利用TCP通信的两台主机首先要经历一个"拨打电话"的过程,等到通信准备结束才开始传输数据,最后结束通话.所以TCP要比UDP可靠的多,UDP是把数据直接发出去,而不管对方是不是在收信,就

TCP/IP学习20180709-数据链路层-arp协议

arp协议:address resolution protocol地址解析协议数据链路层,每个数据包都有MAC地址.主机是怎样根据对方主机的ip地址知道对方主机的mac地址呢?通过arp协议.主机里有ip-arp对应表.拿到ip就查对应表.查到了就用mac地址.查不到就向网络发arp协议广播包.收到这个广播包的所有主机都查自己的ip地址.如果该主机发现自己的ip地址符合,就把包含自己mac地址的arp包发给广播主机.广播主机拿到arp包后更新ip-arp对应表.然后用arp地址发送数据包. 原文

TCP/IP 网络编程 (抄书笔记 1) -- TCP

TCP/IP 网络编程 (抄书笔记 1) – TCP TCP/IP 网络编程 (抄书笔记 1) – TCP Table of Contents server client 更好的 client 端实现 来源: <TCP/IP 网络编程> 抄书: 通信的双方都各自 拥有 输入缓存和输出缓存 socket 的 write 函数并不是立即传输数据, 而是写到输出缓存区, 到达另一端的输入缓存区 socket 的 read 函数调用的瞬间, 就从输入缓存区中读取数据 TCP 协议中的滑动窗口会保证 数

《TCP/IP详解:卷一》-TCP部分讲解

TCP/IP协议 作者:Danbo 2015-7-2 本文为参考TCP/IP详解卷一,某些知识点加上了作者自己的理解,如有错误,欢迎指正,可以微博联系我! TCP包格式和IP包格式如下: TCP的正常建立与关闭 建立连接 TCP协议提供可靠的面向连接服务,采用三次握手建立连接.第一次握手:建立连接时,客户端发送SYN包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认:第二次握手:服务器收到SYN包,向客户端返回ACK(ack=j+1),同时自己也发送一个SYN包(syn=k),

【Java TCP/IP Socket】深入剖析socket——TCP套接字的生命周期

建立TCP连接 新的Socket实例创建后,就立即能用于发送和接收数据.也就是说,当Socket实例返回时,它已经连接到了一个远程终端,并通过协议的底层实现完成了TCP消息或握手信息的交换. 客户端连接的建立 Socket构造函数的调用与客户端连接建立时所关联的协议事件之间的关系下图所示: 当客户端以服务器端的互联网地址W.X.Y.Z和端口号Q作为参数,调用Socket的构造函数时,底层实现将创建一个套接字实例,该实例的初始状态是关闭的.TCP开放握手也称为3次握手,这通常包括3条消息:一条从客

TCP/IP详解学习笔记(6)-UDP协议

1.UDP简要介绍 UDP是传输层协议,和TCP协议处于一个分层中,但是与TCP协议不同,UDP协议并不提供超时重传,出错重传等功能,也就是说其是不可靠的协议. 2.UDP协议头 2.1.UDP端口号 由于很多软件需要用到UDP协议,所以UDP协议必须通过某个标志用以区分不同的程序所需要的数据包.端口号的功能就在于此,例如某一个UDP程序A在系统中注册了3000端口,那么,以后从外面传进来的目的端口号为3000的UDP包都会交给该程序.端口号理论上可以有2^16这么多.因为它的长度是16个bit