TCP/IP是互联网相关的各类协议族的总称,是网络通信的基础
TCP/IP分层管理
分为:应用层、传输层、网络层、数据链路层
分层的好处:
- 某些设计需要修改时,影响范围小,只需修改变动的层次
- 简化设计,处于应用层上的应用可以只考虑分派给自己的任务,不需弄清对方的传输任务
各层作用:
应用层 面向用户,提供应用服务,如HTTP、FTP、DNS等。
传输层 对上层应用层,为网络连接中的计算机提供数据传输,有TCP、UDP两个协议
网络层 处理网络上流动的数据包,规定了传输路线,并把数据包传送给对方,如IP协议。
数据链路层 处理连接网络的硬件部分,包括控制操作系统、硬件的设备驱动、网卡等。
利用TCP/IP协议族进行网络通信时,发送端从应用层往下走,层层包装,接收端则是相反的往上走到应用层,层层解包。
以HTTP协议为例,如下图:
1.应用层 DNS解析域名查找IP地址,HTTP生成请求报文
2.传输层 TCP协议分割HTTP请求报文,确保准确传输,进行三次握手,建立TCP连接
3.网络层 IP协议 根据ARP协议查出MAC地址,一边中转一边传送
4.数据链路层 加入以太网协议头,并进行CRC编码,为最后的数据传输做准备
5.服务器处理HTTP请求报文,返回HTTP响应报文
传输层协议TCP 、UDP
区别
-
TCP(Transmission Control Protocol,传输控制协议),是一种面向连接的、可靠的、基于字节流的传输层通信协议。
在接收发送数据前,必须先和对方建立可靠的连接,也就是三次握手。
会对报文进行分割、重组,并保证数据的顺序和正确性。
提供拥塞控制和流量控制。拥塞控制主要来避免包丢失和超时重传,一旦发生就采用快速重传算法,将当前速度变为一半。
-
UDP(User Data Protocol,用户数据报协议),提供一种无连接、简单、不可靠的信息传送服务。
在接收发送数据前,不用建立连接。
不保证数据的顺序和正确性。
不提供拥塞控制和流量控制。
传输速度快。
TCP三次握手
服务端处于 LISTEN状态主动监听
1.客户端发送一个带SYN标志的数据包给服务端,处于SYN-SENT状态
2.服务端收到后回传一个带SYN/ACK标志的数据包确认信息,处于SYN-RCVD状态
3.最后客户端在回传一个带ACK标志的数据包,处于ESTAVLISHED状态,服务端收到 ACK后,也处于ESTABLISHED状态
TCP四次分手
1.客户端发送一个FIN,关闭传输,然后处于FIN-WAIT-1状态,
2.服务端返回ACK,处于CLOSED-WAIT状态
3.服务端关闭传输,发送FIN
4.客户端现处于FIN-WAIT2,回传ACK,然后处于TIME-WAIT状态
最后都CLOSED