最后更新:2022-06-20 09:15:54 手机定位技术交流文章
网络层协议提供了主机之间的逻辑通信;传输层协议提供了进程之间的逻辑通信。
子网掩护:指示IP地址的哪些位数识别主机所在的子网,以及哪些位数识别主机的位数掩护。
// TCP 和 UDP -> 传输层的协议
UDP: 用户数据报告协议, 不连接, 单播, 多播, 广播, 数据报告, 不可靠
TCP:传输控制协议,面向连接,可靠,基于字节,只支持单通道传输
| UDP | TCP | |
|---|---|---|
| 是否创建连接 | 无连接 | 面向连接 |
| 是否可靠 | 不可靠 | 可靠的 |
| 连接的对象个数 | 一个对一个,一个对许多人,许多对一个,许多对许多人 | 支持一对一 |
| 传输的方式 | 面向数据报 | 面向字节流 |
| 首部开销 | 8个字节 | 最少20个字节 |
| 适用场景 | 实时应用(视频会议,现场) | 高可靠性应用(文件传输) |

服务器端(连接角色的被动接受)
- 创建监视的接口 - 监视: 监视客户端连接 - 接口: 这个接口实际上是文件描述符
- 将此监视文件描述符绑定到本地IP和端口(IP和端口是服务器地址信息)-这是当客户端连接到服务器时使用的IP和端口
- 设置监视,监视fd开始工作
- 当客户端启动连接时,禁用块,接受连接,并接收一个数据包(fd)来与客户端通信
- 通讯-接收数据-发送数据
- 通信结束,断开连接
客户端
- 创建通信接口(fd)
- 连接服务器,需要连接服务器的IP和端口
- 连接成功了,客户端可以直接和服务器通讯-接收数据-发送数据
- 通信结束,断开连接
TCP有一个备份机制,用于服务端检查已经建立的TCP链接的客户端状态。区别是:
三次握手
第一次握手,客户端将SYN消息发送到服务端,SYN符号是1,要求开放服务端口,此时,服务器知道客户端要与它建立一个新的连接,然后服务器将确认消息包ACK位置发送给客户端1,同时向客户发送SYN包,要求客户端打开终端。
以上两次握手之后,对于客户端而言,事实上,我们已经知道所有信息,也就是说,我的客户也可以向服务器发送消息,我也可以从服务端接收消息;服务端,两次握手是不够的,因为到目前为止,服务端只知道一件事,客户给我发了我收到的信,但是,我向客户发了一封信,我不知道客户是否能得到。
第三个握手是当客户收到服务端发送的确认消息并继续对服务端作出回应时,
它也是一个确认消息,ACK符号位置为1。
通过上述三个连接,服务器和客户端都互相认识,我可以互相发送信息,并相互接收信息,这样就可以安全地建立连接。
(目的:确认双方的正常收据和交货)
四次挥手
四次挥手机制,首先由客户发起,客户向服务端发送 FIN消息,表示客户向服务端口方向转达消息的终止,当服务终止时收到此通知时,我知道客户想要与他断绝联系。但对于服务的结局,很有可能还有未完成的邮件,它必须继续发送;所以在这个点,他只能为服务结束确认一个消息,发送ACK消息确认包后,服务器继续发送未发送消息。
发送完毕后,然后继续向客户发送 FIN消息,终止从服务端向客户转达的信息,以此方向,此时服务端也准备好切断连接,所以当这个消息发送给客户时,客户端也将继续向服务器发送确认ACK消息的消息。
通过这些四个交互和连接,我们知道服务端和客户端都准备好切断连接,这样就可以切断连接。
具体讲讲三次握手
第一次握手:
1.客户职位SYN至1
2.生成一个随机32位序列 seq=J,可以将数据(数据的大小)放在序列后面
第二次握手:
1.服务器端客户端接收连接:ACK=1
2.服务器将返回确认序列: ack=客户端序列+数据长度+SYN/FIN(以字节计算)
3.服务器将向客户端发起连接请求:SYN=1
4.服务器生成一个随机序列: seq = K
第三次握手:
1.客户队列以回答服务器连接请求:ACK=1
2.客户端答复接收的服务器端数据: ack = 服务端序列 + 数据长度 + SYN/FIN (由一个字节计算)

当连接被切断时,会发生四波,在程序中调用 close()时,将使用TCP协议执行四波。
客户端和服务器可以自行启动脱离连接,并且谁叫 close() 首先启动它。
因为当TCP连接使用三个握手时,连接是双向的,在切断时必须是双向的。
另一方面,如果您主动切断连接,您将进入 TIME_WAIT状态,持续时间为2msl
官方推荐时间:2分钟,实际上30岁
当TCP连接时,主动开关接收了被动开关和最后的ACK发送的 FIN,连接的主动关闭必须处于 TIME_WAIT状态,持续2msL。如果它发送的ACK丢失,则允许TCP连接的主动关闭器重新发送最后的ACK。
主动开关重新发送的最后的ACK不是因为被动开关重新发送的ACK(它们不消耗序列数,被动关闭不会再发送),这是因为被动的闭幕继发了它的 FIN.事实上,被动开关总是把 FIN 重新定位,直到它收到最后的 ACK 。
TIME_WAIT
TIME_WAIT由主动关闭形成。当第四波完成时,即客户端发送Ack消息到服务器并确认消息,客户端输入 TIME_WAIT并等待2MSL
CLOSE_WAIT
CLOSE_WAIT由被动关闭构成,当客户端发送 FIN0-1消息时,服务器返回ACK消息,客户端输入CLOSE_WAIT
滑窗协议是提高吞吐量的一种技术,
允许发送者在收到任何答复之前发送额外的包。
接收器告诉发送者可以在指定的时间发送多少包(称为窗口大小)。
滑动窗口是一个在TCP中实现的载荷结构,例如ACK确认、流量控制和拥挤控制。
在TCP中,一个滑动窗口用于控制传输,而滑动窗口的大小意味着接收器有更多的缓冲空间接收数据。 发送者可以根据滑动窗口的大小确定该发送多少字节数据。
当滑动窗口为0时,发送者不能再发送数据消息。
注:
如果接收机的滑动窗口满了或接收机的响应包丢失,双方都在等待,并且出现僵局。 在这一点上,必须坚持到计时器来协助发送者定期询问接收机,从TCP维护机制到计时器。
UDP只接收一个插座缓冲区,没有接口发送缓冲区;也就是说,只要有数据,对方是否能正确地收到它.当另一端接入缓冲区时,新的数据消息不能输入接口接受缓冲区,这份数据报告将被丢弃,因此UDP不能保证数据能够到达目的地,此外,开发计划署没有流动控制和再传输机制,因此UDP数据传输是不可靠的。
讨论HTTP/1 HTTP/2 HTTP/3的发展
有多种原因导致网页的开放缓慢,以下是一些常见问题:
本文由 在线网速测试 整理编辑,转载请注明出处。