什么是TCP/IP协议
计算机与计算机通过网络通信而达成的“约定”,双方通过该约定,就能互相通信。
传输方式的分类
- 面向有连接型
在传输数据之前,要先建立通信线路,传输完成后,要断开通信线路。 - 面向无连接型
无需确认对方是否存在,发送端随时可以发送数据。
三次握手,四次挥手
TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,在收发数据之前,必须和对方建立连接。
三次握手的目的是在发送数据之前,让双方的发送和接受同步。
- 第一次握手:客户端链接请求(建立链接)
- 第二次握手:服务器同意连接和要求同步
- 第三次握手:客户端确认同步
- 传输数据
为什么要三次握手
为了防止客户端两次发送链接请求,其中第二次链接请求得到了服务器的回复,建立了链接,传输完数据后已经释放。但第一次链接请求可能在某个网络节点堵车堵了一个小时才到达服务器,服务器以为客户端又要发送数据,于是又回复了请求,但客户端并不想发送数据,不理睬服务器的回复。如果没有第三次确认的话,服务器就会因为这堵车的链接请求傻乎乎地等客户端发送数据,直到超时才结束等待,白白浪费时间。
四次挥手的目的传输完成,断开通信连接。
- 发送端发送释放链接请求
- 接收端回复释放链接确认
- 接收端发送接收端释放链接请求
- 发送端回复接收端释放链接确认
客户端为什么会等待
两个理由
- 如果服务端的释放链接请求报文丢失,客户端没有收到就不会回复确认,在客户端等待的这段时间内,服务端因为没有收到客户端回复的确认报文会重发释放链接请求,这时客户端收到该请求,回复确认后,双方链接释放。
等待的目的是确认ACK报文会被服务器端收到。 - 防止上一个链接的报文出现在下一个链接中。等待2MSL时间,本次链接所产生的所有报文都会到达它的生命尽头,从而从网络中消失,保证不会出现在使用同一IP地址和端口的下一次链接中。
|