1.TCP/IP协议介绍
TCP (Transmission Control Protocol)协议属于传输层协议,TCP提供IP环境下的数据可靠传输,
他提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用,通过面向连接、端到端和可靠的数据包发送。
通俗的讲,它是事先为所发送的数据开辟出连接好的通道,然后在进行数据发送。
TCP支持的应用协议主要有:Telnet、 FTP、SMTP等
2、协议的分层
一个国际标准OSI七层协议模型,而TCP/IP则是一个四层协议
3.各层协议的基本作用
网络接口层 :主要将数据报发送到网络传输介质以及从网络上接收TCP/IP数据报,TCP/IP的最底层
网际层:寻址和对数据报的封装以及重要的路由选择功能,
传输层:主要负责在应用进程之间“端到端”通信,即从某个应用进程运输到另外一个一个应用进程。
应用层:包括多种高层协议,为应用进程服务的一层 。
4.三次握手和四次握手
1)三次握手的目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主要的目的就是双方确认自己与对方的发送与接收是正常的。**
第一次握手:Client 什么都不能确认;Server 确认了对方发送正常,自己接收正常
第二次握手:Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:对方发送正常,自己接收正常
第三次握手:Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:自己发送、接收正常,对方发送、接收正常
所以三次握手就能确认双发收发功能都正常,缺一不可
2)断开一个 TCP 连接则需要“四次挥手”:
- 客户端-发送一个 FIN,用来关闭客户端到服务器的数据传送
- 服务器-收到这个 FIN,它发回一 个 ACK,确认序号为收到的序号加1 。和 SYN 一样,一个 FIN 将占用一个序号
- 服务器-关闭与客户端的连接,发送一个FIN给客户端
- 客户端-发回 ACK 报文确认,并将确认序号设置为收到序号加1
为什么连接的时候是三次握手,关闭的时候却是四次握手?
答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,“你发的FIN报文我收到了”。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。