常见网络知识面试题

    xiaoxiao2022-07-03  151

    TCP如何建立链接

    三次握手: 主动发起连接请求端,发送 SYN 标志位,请求建立连接。 携带序号号、数据字节数(0)、滑动窗口大小。 被动接受连接请求端,发送 ACK 标志位,同时携带 SYN 请求标志位。携带序号、确认序号、数据字节数(0)、滑动窗口大小。 主动发起连接请求端,发送 ACK 标志位,应答服务器连接请求。携带确认序号。 四次挥手: 主动关闭连接请求端, 发送 FIN 标志位。 被动关闭连接请求端, 应答 ACK 标志位。 ----- 半关闭完成。 被动关闭连接请求端, 发送 FIN 标志位。 主动关闭连接请求端, 应答 ACK 标志位。 ----- 连接全部关闭

    什么是滑动窗口

    发送给连接对端,本端的缓冲区大小(实时),保证数据不会丢失。

    如何在internet上识别唯一一个进程

    答:通过“IP地址+端口号”来区分不同的服务

    路由器和交换机的区别

    路由器可以为局域网自动分配IP和虚拟拨号。 交换机只是用来分配网络数据的。 路由器在网络层,根据IP地址寻址。 路由器可以处理“TCP/IP”协议,交换机不行。 交换机在中继层,根据“MAC”地址寻址。 路由器可以把一个IP分给多个主机使用,对外IP相同。 交换机可以把很多主机连接起来,对外的IP不同。 路由器可以提供防火墙,交换机不能提供这个功能。 交换机是做扩大局域网接入点的,可以让局域网连进更多的电脑。 路由器是用来做网间连接,也就是用来连接不同网络的。

    TCP状态时序图

    结合三次握手、四次挥手 理解记忆。

    主动发起连接请求端: CLOSE – 发送SYN – SEND_SYN – 接收 ACK、SYN – SEND_SYN – 发送 ACK – ESTABLISHED(数据通信态)

    主动关闭连接请求端: ESTABLISHED(数据通信态) – 发送 FIN – FIN_WAIT_1 – 接收ACK – FIN_WAIT_2(半关闭)

    – 接收对端发送 FIN – FIN_WAIT_2(半关闭)-- 回发ACK – TIME_WAIT(只有主动关闭连接方,会经历该状态)

    – 等 2MSL时长 – CLOSE

    被动接收连接请求端: CLOSE – LISTEN – 接收 SYN – LISTEN – 发送 ACK、SYN – SYN_RCVD – 接收ACK – ESTABLISHED(数据通信态)

    被动关闭连接请求端: ESTABLISHED(数据通信态) – 接收 FIN – ESTABLISHED(数据通信态) – 发送ACK

    – CLOSE_WAIT (说明对端【主动关闭连接端】处于半关闭状态) – 发送FIN – LAST_ACK – 接收ACK – CLOSE

    重点记忆: ESTABLISHED、FIN_WAIT_2 <–> CLOSE_WAIT、TIME_WAIT(2MSL)

    netstat -apn | grep 端口号

    2MSL时长

    一定出现在【主动关闭连接请求端】。 — 对应 TIME_WAIT 状态。

    保证,最后一个 ACK 能成功被对端接收。(等待期间,对端没收到我发的ACK,对端会再次发送FIN请求。)

    端口复用

    int opt = 1; // 设置端口复用。

    setsockopt(lfd, SOL_SOCKET, SO_REUSEADDR, (void *)&opt, sizeof(opt));

    半关闭

    通信双方中,只有一端关闭通信。 — FIN_WAIT_2

    close(cfd);

    shutdown(int fd, int how);

    how: SHUT_RD 关读端

    SHUT_WR 关写端

    SHUT_RDWR 关读写

    shutdown在关闭多个文件描述符应用的文件时,采用全关闭方法。close,只关闭一个。

    最新回复(0)