您现在的位置是:首页 >其他 >TCP/IP协议族网站首页其他
TCP/IP协议族
TCP/IP协议族
一系列协议组成的一个网络分层模型
分层
分层原因
网络的不稳定性
具体分层
应用层
决定了向用户提供应用服务时通信的活动,如HTTP、FTP(文件传输协议)、DNS(域名系统)
传输层
对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。在传输层有两个性质不同的协议:TCP和UDP
TCP和UDP区别
-
连接
TCP是面向连接的,传输数据前要先建立连接
UDP是不需要连接,即刻传输数据。 -
连接个数
TCP是一对一的两点服务
UDP支持一对一、一对多、多对多的交互通信 -
可靠性
TCP是可靠交付数据,数据可以无差错、不丢失
UDP不可靠传输,尽量最大努力交付 -
拥塞控制、流量控制
TCP有拥塞控制、流量控制机制,保证数据传输的安全性。
UDP则没有,即使网络非常拥堵了,也不会影响UDP的发送速率 -
首部开销
TCP首部长度最小20个字节,最大60个字节
UDP首部只有8个字节,并且是固定不变的 -
传输方式
TCP面向字节流
UDP面向报文 -
使用场景
TCP适用于要求可靠传输的应用,例如文件传输
UDP适用于实时应用(IP电话、视频会议、直播)
拥塞控制防止数据过多注入到网络中导致网络资源(路由器、交换机等)过载。
TCP拥塞控制默认认为网络丢包是由于网络拥塞导致的,所以一般的TCP拥塞控制算法以丢包为网络进入拥塞状态的信号。对于丢包有两种判定方式,一种是超时重传RTO[Retransmission Timeout]超时,另一个是收到三个重复确认ACK。
流量控制是接收方通过TCP头窗口字段告知发送方本方可接收的最大数据量,用以解决发送速率过快导致接收方不能接收的问题。所以流量控制是点对点控制
网络层
用来处理在网络上流动的数据包。
数据包是网络传输的最小数据单位。
该层规定了通过怎样的路径(所谓的传输路线)到达对方计算机,并把数据包传给对方
TCP和UDP是并行的,为了对他们有一个共同的支持,所以分出网络层
链路层
用来处理连接网络的硬件部分
TCP连接
什么叫做连接
通信双方建立确认「可以通信」,不会将对方的消息丢弃,即为建立连接
TCP连接的建立与关闭
建立连接
- 客户端:「我要向你发送消息」
- 服务器:「好的。我要向你发送消息」
- 客户端:「好的
发送端首先发送一个带SYN标志的数据包给对方
接收端接收到后回传一个带有SYN/ACK标志的数据包以示传达确认信息
最后发送端再回传一个带ACK标志的数据包
关闭连接
- 客户端:「我不再给你发送消息」
- 服务端:「好的」
- 服务端:「我不再给你发送消息」
- 客户端:「好的」
为什么 TCP 连接在断开时是四次挥手而不是三次?
因为在客户端停止向服务器发送消息时,也许服务器还有消息需要向客户端发送,在稍后服务器的消息发送完毕之后,才需要向客户端发送通知。
长连接
为什么需要长连接
因为移动网络并不在Internet中,而是在运营商的内网,因此并不具备真正的公网IP,因此当某个TCP连接在一段时间不通信之后,网关会处于网络性能考虑而关闭这条TCP连接和公网的连接通道,导致这个TCP端口不再能收到外部通信消息,即TCP连接被动关闭
长连接的实现方式
心跳。即在一定间隔时间内,使用TCP连接发送超短无意义消息来让网关不能将自己定义为「空闲连接」,从而防止网关将自己关闭