乐趣区

网络协议

TCP/IP 报文结构

4.time_wait 阶段
tcp 连接释放客户端收到服务器发送的链接释放 FIN 请求报文进 time_wait 阶段

5.tcp 连接释放第四次握手为什么需要等待 2 个最长报文段寿命 防止第四次握手客户段发送的 ACK 报文丢失,服务器无法正常关闭链接

6.tcp 连接释放第四次握手丢失 服务器端端口如何回收 保活计时器 — 服务器在每次接收到客户端数据时重设 该计数器(通常为 2 小时),若在设置时间内都 未能接收到客户端数据,服务器这是开始发送探测报文段,以后每隔 75 秒发送一次,若连续发送 10 个探测报文段仍无响应 服务器自动关闭链接。

tcp 流量控制
tcp 基于滑动窗口实施流量控制,流量控制目的在于发送方发送速率不能超出接收方的接收速率,即发送方的发送窗口值不能超出接收方给出的接收窗口值,tcp 的窗口单位为字节

tcp 拥塞控制
拥塞控制的目的在于防止过多的数据注入网络,避免网络中的路由或者链路过载

发送方动态调节发送窗口使其等于拥塞窗口,判断网络拥塞的依据是超时
拥塞控制算法:
慢开始:发送方设置初始拥塞窗口值为 2 至 4 个最大报文段 (MSS, 通常为 1460 字节) 长度值,每收到一个对新报文段确认则将发送方拥塞窗口值加 1,拥塞窗口增长呈指数增长

拥塞避免:拥塞窗口超出慢开始门限进入拥塞避免阶段,每经过一个传输轮次(传输轮次指发送方把当前拥塞窗口允许发送的报文段全部发送出去并且收到了最后最后一个字节的确认)其拥塞窗口值加 1,拥塞窗口增长呈线性增长

快重传:快重传对于失序到达报文段,接收方应立即发送对已到达报文段的重复确认,通常为 3 个重复确认,而非捎带确认,目的在于避免发送方误认为网络出现拥塞

快恢复:快重传使发送方知道网络只是存在个别报文段丢失,不启动慢开始算法,而开始执行拥塞避免算法

7.tcp 拥塞控制滑动窗口大小计算

tcp 拥塞窗口 cwnd 在拥塞控制时变化图示

2.https 与 http 的区别

3.https 中 rsa 加密在哪一阶段

7. 数字签名作用

8.TCP 和 UDP 的区别,DNS 基于哪一种

10restfull 如何理解

4.tcp 报文结构

5.socket 编程对应 tcp 连接 释放的阶段

TCP 连接释放常用套接字 API
s = socket(<parameters>) 创建一个新的,未命名,未关联的套接字
bind(s, <local IP:port>) 向套接字赋一个本地端口号和接口

connect(s, <remote IP:port>) 创建一条连接本地套接字和远程主机及端口的连接
listen(s, …) 标示一个本地套接字,使其可以合法接受连接
s2 = accept(s) 等待某人建立一条到本地端口的连接
n = read(s, buffer, n) 尝试从套接字向缓冲区读取 n 个字节
n = write(s, buffer, n) 尝试从套接字向缓冲区写入 n 个字节
close(s) 完全关闭 TCP 连接
shutdown(s,<side>) 只关闭 TCP 连接的输入或者输出端
getsocket(s, …) 读取某个内部套接字配置选项的值
setsocket(s, …) 修改某个内部套接字配置选项的值

TCP API 允许用户创建 TCP 的端点数据结构,将这些端点与远程服务器的 TCP 端点进行连接,隐藏了所有底层网络协议的握手细节,以及 TCP 数据流与 IP 分组之间的分段和重装细节

客户端和服务器通过 TCP 套接字接口进行通信图示

退出移动版