网络基础确实不熟悉,有点难度,不过还是多看就好
1. OIS七层参考模型
应用层
通过应用进程间的交互完成网络应用。
应用层协议定义的是应用进程间的通信和交互的规则,常见有HTTP、DNS、SMTP、POP3
表示层
将应用程序的信息转换成适合网络传输的格式。
比如编码问题,HTML,XML,MiME
会话层
连接的管理,何时数据发送和分割。
并无实际传输作用,首部记录数据的发送顺序
传输层
在进程之间的通信提供通用的数据传输服务。
无需在路由器上处理,没有到达会重试,确保数据到达,传输层和网络层配合才能实现可靠传输。协议有TCP / UDP
网络层
将数据传送到目的地,负责寻址和路由选择。
IP属于分组交换,但不具备重发机制,属于非可靠协议
数据链路层
负责相邻节点的数据传输,分数据帧发送。
帧包括数据和必要的控制信息(同步、地址、差错信息)
物理层
比特流和电信号的转换,及透明比特流的传输。
屏蔽传输介质和物理设备的差异
2. 分组交换
电路交换:独占信道,空闲时被独占也不能发送数据
报文交换:报文越大,时延越大。且出错得全部重发
分组交换:分割成小数据包,共享同一条信道,提高效率
3. TCP / UDP 的区别
TCP:面向连接、可靠字节流传输(各种控制)、所以需资源多、传输效率相比慢 场景使用:文件、邮件、登录 UDP:无连接、不可靠数据报、所需资源少、传输效率快、但细微处理都交给上层 场景使用:语音、视频、直播
TCP或UDP要用到操作系统提供的类库,即套接字
一个通信由五个标识唯一确定:目的IP,源IP,目标端口,源端口,协议号
4. 常见端口号
TCP/UDP可同端口,因为接收数据后交由不同的处理程序处理
- 21:ftp
- 22:SSH
- 23:telnet
- 25:smtp
- 53:DNS
- 110:pop3
- 3306:mysql
- 8080:tomcat
- 80:http
- 443:https
- 6379:redis
- 5672:rabbitMQ
5. TCP协议如何保证可靠传输
- 序列号 确认应答号:是否重复接收和是否收到消息
- 校验和:TCP保持首部和数据的检验和,确保端到端的数据正确性
- 超时重传:发送数据后,没有收到确认应答则重发这个分组
- 连接管理:三次握手和四次挥手
- 流量控制:发送不超过接收端决定的窗口大小,防止高负荷下接收端的拒收而触发重传机制
- 拥塞控制:对发送的数据大小进行控制(选择小的拥塞窗口或接收窗口),防止本来拥塞的网络来一个大的数据
- ARQ协议(自动重传请求):包括停止等待ARQ协议和连续ARQ协议
- 停止等待协议:发完一个分组就停止发送,等待确认应答。超时未收到确认应答,则需要重传,直到接收到应答
- 停止等待协议:若接收收到重复分组(序列号),则丢弃,但还要发送确认应答
- 有个超时计时器,比分组传输的平均往返时间更长一些
- 连续ARQ:窗口控制,累计收到同个序列号才进行重发(高速重发)
6. 浏览器输入url回车键发生了什么?
- DNS解析:通过DNS获取域名对应的IP
- TCP连接:三次握手建立连接
- 发送HTTP请求
- 服务器处理请求并返回响应
- 浏览器解析渲染页面
- 连接结束:四次挥手
其中:
TCP:与服务器三次握手建立TCP连接
IP:建立连接的发送数据在网络层使用IP协议
OPSF:IP在路由选择时使用
ARP:路由与服务器通信时需要MAC
HTTP:使用网页用到HTTP协议
7. 补充
- 数据链路的分帧有最大传输单位 MTU ,为了分组交换提高效率(以太网为1500字节,ATM为9180字节),那么数据链路层就限制了IP数据包大小,IP数据报需要分片,同理IP对上层也需要限制,最大为MSS,TCP需要分段
- ARP:知道IP后,相邻网络需要知道MAC,那么广播ARP包,对应IP的主机将自己MAC地址作为ARP响应
- NAT:私有地址访问外网转为全局IP,出网时用5个标识映射唯一连接
8. 各种首部
数据链路层的,数据帧:
- FCS:帧检测序列,检测全部(比如CRC循环校验码)
网络层的,IP数据报:IPV4
- 首部校验和:只校验首部
传输层的,TCP,UDP数据段:
- 校验和:校验全部,数据篡改数据链路可以防止。校验和防止路由器内存或程序漏洞导致的错误
参考: 《图解TCP/IP》