这是我参与8月更文挑战的第3天,活动详情查看:8月更文挑战
计算机网络试题汇总
1.OSI七层模型
高中记的一个口诀,哈哈哈:应表会传网数物
| 说明 | 层级 |
|---|---|
提供为应用软件设置的接口(常用协议HTTP、HTTPS、FTP、SSH、TELNET、SMTP、POP3等) | 应用层 |
将数据转换成接收者能够兼容并且适合传输的格式 | 表示层 |
对两台计算机进行通信时的通信连接进行配置与维护 | 会话层 |
将传输表头(TH)添加进数据而后形成数据包,传输表头内包含了所使用的协议等信息 | 传输层 |
决定着数据的路径选择以及转寄,将网络表头(NH)添加进数据数据包中,形成分组,网络表头中包含着网络资料 | 网络层 |
负责网络寻址、错误侦测和改错 | 数据链路层 |
在局部局域网上发布数据帧,管理着通信设备与网络媒体间的互通 | 物理层 |
2.TCP与UDP的区别
- 连接方面
- TCP:
TCP面向连接,发送数据时需要先建立连接 - UDP:
UDP面向无连接
- TCP:
- 可靠性方面
- TCP:
TCP面向可靠连接,通过TCP传输的协议不丢失、无差错、不重复,按顺序到达,因此适合进行大数据量的交换 - UDP:
UDP面向不可靠连接,尽最大努力进行数据交付,不确保数据到达
- TCP:
- 应用方面
- TCP:
TCP面向字节流,存在网络拥塞与流量控制机制 - UDP:
UDP面向报文,网络拥塞不会影响传输速率,因此可能会存在丢包的情况,常用于:视频会议、直播等
- TCP:
- 连接对象
- TCP:
TCP仅能为一对一 - UDP:
UDP支持一对一、一对N、N对一、N对N
- TCP:
- 首部开销
- TCP:
TCP头部20-60字节 - UDP:
UDP头部仅8字节
- TCP:
3.TCP的三次握手和四次挥手
三次握手
- 客户端通过
SYN报文发送请求信息,寻找服务端上开通的端口发起握手,并将状态设置为SYN_SEND - 服务端收到
SYN报文,回复SYN+ACK报文,同意进行连接,并将状态设置为SYN_RCVD - 客户端收到服务端回复的
SYN+ACK报文,将ACK报文发给服务端,表示收到同意信息,已建立连接,同时将状态设置为ESTABLISHED状态 - 服务端收到
ACK报文,知道连接已建立,也将状态设置为ESTABLISHED状态
简单来说:
客户端:我要和你建立连接 → 服务端:知道了,我准备好了,你连接吧 → 客户端:好的,收到你的信息了,连好了
四次挥手
在挥手之前,客户端、服务端之间都已建立好了连接,故状态均为ESTABLISHED,若是客户端首先发起了挥手请求,则有以下流程:
- 客户端发出
FIN+ACK报文,报文中指定SEQ序列号,状态变为FIN_WAIT1 - 服务端收到客户端发出
FIN的报文,回复ACK报文,并将ACK设置为客户端报文SEQ序列号+1,表示服务端已收到客户端的挥手,服务端状态变为CLOSE_WAIT状态 - 服务端准备断开连接,发出
FIN报文,并指定一个序列号,状态变为LAST_ACK - 客户端收到服务端发出的
FIN报文,发送一个ACK报文作为应答,此时状态为TIME_WAIT,等待一段时间保证服务端收到ACK报文后,状态变为CLOSE - 服务端收到
ACK报文,断开连接,处于CLOSE状态