TCP/IP协议
IP协议
IP协议,全称 Internet protocol - 互联网协议。属于OSI七层协议模型中的 网络层。
通过IP地址,可以定位到对应的计算机。
协议过程
主机A -- 访问(数据包) --> 服务器B
- A访问B的过程中,会发送一个数据包到互联网
- 数据包中包含一个叫 IP头 和 HTTP数据 的数据结构
- IP头包含:IP版本,源IP地址(回复信息),目标IP地址(寻址),生存时间等
- 数据包中包含一个叫 IP头 和 HTTP数据 的数据结构
- 互联网有大量的网络通信设备(如路由器),路由器根据数据包的目标IP地址查找路由表,然后转发到目标服务器B
- 服务器B收到请求数据后,将源目IP地址翻转,并封装回数据包发送到互联网。
TCP协议
IP协议只能指明数据包的源/目通信方(即这是谁发送给谁的数据),但是不能保证数据包一定能到达对方,数据是否被丢弃以及丢弃之后如何处理,这些IP协议都无能为力。这时候就需要TCP协议来解决上述问题。
TCP协议,全称 Transmission control protocol - 传输控制协议。属于OSI七层协议模型中的 传输层。
通过TCP协议,可以定位到计算机中对应的应用程序。
协议过程 主机A -- 访问(数据包) --> 服务器B
- A访问B的过程中,会发送一个数据包到互联网
- 数据包中包含一个叫 TCP头、IP头 和 HTTP数据 的数据结构
- TCP头包含一个端口号,包含一下
- 源端口
- 目标端口
- 排序序列号(接收端重排数据包可用)
- TCP头包含一个端口号,包含一下
- 数据包中包含一个叫 TCP头、IP头 和 HTTP数据 的数据结构
中间涉及到 三次握手,四次挥手
- 三次握手:建立连接前,A与B发送三个数据包以确认连接
- A -> B,你可以听到我说话吗
- B -> A,可以,你可以听到我说话吗
- A -> B,可以,我要给你发信息了
- 四次挥手:断开连接之前,A与B发送四个数据包以确认断开
- A -> B,我不说了(FIN)
- B -> A,我知道了(ACK)。等一下,上一句还没说完(传输数据)
- B -> A,好了,说完了,我也不说了(FIN)
- A -> B,我知道了(ACK)
UDP协议
在传输层还有另一个协议,叫做 UDP协议(User Datagram protocol - 用户数据包协议)
传输过程 TCP头 改为 UCP头。端口号也不会有排序序列号
TCP与UDP的对比
UDP的短板
- 数据包在传输过程中易丢失
- 大文件会被拆分成很多小的数据包进行传输
- 小的数据包经由不同的路由,并在不同的时间到达接收端
- 由于UDP头中不包含排序序列号,所以接收端不知道如何组装这些数据包
- 如果传输过程中中断,UDP不提供重发机制
但是!UDP协议它快!因为没有三次握手,四次挥手的过程,以及数据包校验机制
TCP的优点
- 对于数据包丢失的情况,TCP提供重发机制
- TCP引入数据包排序机制,把乱序的数据包根据排序序列号重新组合成一个完整的文件
但是!数据传输可靠了,但是传输速度慢了