1.TCP/IP简介
TCP/IP协议源于1969年,是针对Internet开发的一种体系结构和协议标准,目的在于解决异种计算机网络的通信问题。使得网络在互联时能为用户提供一种通用、一致的通信服务。是Internet采用的协议标准。
TCP/IP是一组通信协议的代名词,是由一系列协议组成的协议簇。它本身指两个协议集:
TCP(传输控制协议)。
IP(互联网络协议)。
TCP/IP协议的基本传输单位是数据包(Datagram)。
TCP/IP传输协议,即传输控制/网络协议,也叫作网络通讯协议。它是在网络的使用中的最基本的通信协议。TCP/IP传输协议对互联网中各部分进行通信的标准和方法进行了规定。并且,TCP/IP传输协议是保证网络数据信息及时、完整传输的两个重要的协议。TCP/IP传输协议是严格来说是一个四层的体系结构,应用层、传输层、网络层和数据链路层都包含其中。
2.TCP/IP协议分层模型
TCP/IP协议族是一组不同层次上的多个协议的组合。TCP/IP通常被认为是一个四层协议系统。
应用层(Application Layer)
包含各种网络应用协议。如HTTP、FTP、telnet、SMTP、DNS、SNMP等。
传输层(Transport Layer)
负责在源主机和目的主机的应用程序间建立、管理和拆除可靠而又有效的端到端连接 。主要有TCP和UDP两个传输协议。
网络互联层(Internet Layer)
负责将分组独立地从信源传送到信宿,主要解决路由选择、拥塞控制和网络互联等问题。如最重要的协议——IP。
负责将IP分组封装成适合在物理网络上传输的帧格式并传输;或将从物理网络接收到的帧解封,取出IP分组交给网络互联层。当前几乎所有的物理网络上都可运行TCP/IP协议。
3.传输控制协议TCP
TCP协议, 即传输控制协议,是一个可靠的、面向连接的协议。所谓连接,就是两个对等实体为进行数据通信而进行的一种结合。面向连接服务是在数据交换之前,必须先建立连接。当数据交换结束后,则应终止这个连接。面向连接服务具有:连接建立、数据传输和连接释放这三个阶段。在传送数据时是按序传送的。
3.1 TCP数据格式
3.2 三次握手
第一次握手:
建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认。
第二次握手:
服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态。
第三次握手:
客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
为什么握手是三次, 而不是两次或者四次?
为了保证双方都具备收发能力,则双方都需要发送SYN和ACK,两次握手则只能确一方具备收发能力;三次握手则可刚好可确定双方都是可以进行收发的。
第一次握手是客户端发送 SYN, 服务端接收, 服务端得出客户端的发送能力和服务端的接收能力都正常;
第二次握手是服务端发送 SYN+ACK, 客户端接收, 客户端得出客户端发送接收能力正常, 服务端发送接收能力也都正常, 但是此时服务器并不能确认客户端的接收能力是否正常;
第三次握手客户端发送 ACK, 服务器接收, 服务端才能得出客户端发送接收能力正常,服务端自己发送接收能力也都正常。
3.3 四次挥手
TCP 一个特别的概念叫作半关闭, 这个概念是说, TCP 的连接是全双工(可以同时发送和接收) 连接, 因此在关闭连接的时候, 必须关闭发送和接收两个方向上的连接。
第一次挥手: 客户端发出释放 FIN=1, 自 己序列号 seq=u, 进入 FIN-WAIT-1 状态。
第二次挥手: 服务器收到客户端的后, 发出 ACK=1 确认标志和客户端的确认号 ack=u+1,自己的序列号 seq=v, 进入 CLOSE-WAIT 状态。
第三次挥手: 客户端收到服务器确认结果后, 进入 FIN-WAIT-2 状态。 此时服务器发送释放 FIN=1 信号, 确认标志 ACK=1, 确认序号 ack=u+1, 自 己序号 seq=w, 服务器进入LAST-ACK(最后确认态)。
第四次挥手: 客户端收到回复后, 发送确认 ACK=1, ack=w+1, 自 己的 seq=u+1, 客户端进入 TIME-WAIT(时间等待) 。 客户端经过 2 个最长报文段寿命后, 客户端 CLOSE;服务器收到确认后, 立刻进入 CLOSE 状态。
为么需要四次挥手
因为为在断开连接时,服务器收到客户端断开请求时可能此时还没有完成数据传输,所以需要先回复客户端我收到你的请求了,等将数据传输完成后,再通知客户开端可以断开连接了,所以服务器需要将应答ack和FIN分两次发送,因此需要四次挥手。
审核编辑 黄昊宇
-
Linux
+关注
关注
87文章
11296浏览量
209357 -
编程
+关注
关注
88文章
3614浏览量
93696 -
TCP
+关注
关注
8文章
1353浏览量
79057
发布评论请先 登录
相关推荐
评论