计算机网络相关知识回顾
一不留神,各种秋招提前批都开始了,被迫开始复习了,哎,一言难尽。。。白菜都快gong不到了
本文篇幅较长,感兴趣的同学可以细品一下,如内容有不妥之处还请斧正,如觉得有漏掉的重要内容还请评论指出,让我不断完善一下此文
希望各位路过的大佬能再指点一二
常见协议的端口
OSI体系结构
自低向上(7层结构)
- 物理层
- 数据链路层
- 网络层
- 传输层
- 会话层
- 表现层
- 应用层
TODO:贴生动形象图
TCP/IP
自底向上(4层)
- 网络接口层
- 网络IP层
- 运输层
- 应用层
TODO:贴生动形象图
五层体协结构
自底向上
- 物理层
- 数据链路层
- 网络层
- 运输层
- 应用层
TODO:贴生动形象图
网际层IP协议
- ARP:地址解析协议--从网络层使用的 IP 地址,解析出在数据链路层使用的硬件地址
- ICMP:网际控制报文协议--用于在IP主机、路由器之间传递控制消息
- ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告
- ICMP 属于IP 层的协议
- PING 使用了 ICMP 回送请求与回送回答报文
- IGMP:网际组管理协议--
IP地址分类
类别 | 构成(x+网络号+主机号) | 范围 | 用途 |
A | 0 +7+24 |
1.0.0.1---126.255.255.254 | |
B | 10 +14+16 |
128.0.0.0---191.255.0.0 | |
C | 110 +21+8 |
192.0.0.0--- 223.255.255.0 | |
D | 1110 + 28(多播) |
多播地址 | |
E | 11110 +留用 |
保留今后使用 |
通信类型
- 单播:从一台主机向另一台主机发送数据包的过程
- 组播:从一台主机向选定的一组主机发送数据包的过程
- 广播:从一台主机向该网络中的所有主机发送数据包的过程
- A类、B类与C类IP地址中主机号全1的地址为直接广播地址
IP数据报
构成
- 首部
- 前:固定长度20
- 后:有可选字段,长度可变
- 数据
图解构成
TODO:想办法巧妙记住
- 版本:4位--IP协议版本,等于4代表IPV4
- 首部长度:4位--可表示的最大数值15*4=60字节,因此 IP 的首部长度的最大值是 60 字节
- 区分服务:8位--用来获得更好的服务,在一般的情况下都不使用这个字段
- 总长度:16位--首部和数据之和长度,单位字节,于是数据报的最大长度为65535字节 2^16-1
- 总长度必须不超过最大传送单元
MTU
- 标识:16位--计数器,用来产生IP数据报的标识
- 标志:3位--目前只有前两位有意义
- 最低位MF(More Fragment):1--后面还有分片,0--为最后一个分片
- 中间位DF(Don't Fragment):0--才允许分片
- 片偏移:13位--指出:较长的分组在分片后,某片在原分组中的相对位置
- 片偏移以 8 个字节为偏移单位
- 生存时间:8位--记为TTL(Time To Live),数据报在网络中可通过的路由器数的最大值
- 协议:8位--指出此数据报携带的数据使用何种协议
- 以便目的主机的 IP 层将数据部分上交给那个处理过程
- 首部检验和:16位--只检验数据报的首部,不检验数据部分
- 这里不采用 CRC 检验码而采用简单的计算方法
- IP 数据报首部检验和的计算采用 16 位二进制反码求和算法
- 源地址:32位--4字节
- 目的地之:32位--4字节
PING
- PING 用来测试两个主机之间的连通性
- PING 使用了 ICMP 回送请求与回送回答报文
- PING 是应用层直接使用网络层 ICMP 的例子,它没有通过运输层的 TCP 或UDP
运输层
UDP
用户数据报协议(User Datagram Protocol)
- 数据单位协议:TCP报文段
特点
- 无连接服务协议
- 传送数据之前不需要建立连接
- 尽最大努力交付,不提供可靠交付
- 数据报文的搬运工,不保证有序且不丢失的传递到对端
- 面向报文的
- 没有拥塞控制,没有流量控制算法
- 支持一对一、一对多、多对一和多对多的交互通信
- UDP 的首部开销小,只有 8 个字节,比 TCP 的 20 个字节的首部要短
面向无连接
- UDP 是不需要和 TCP 一样在发送数据前进行三次握手建立连接,想发数据就可以开始发送了
- 只是数据报文的搬运工,不会对数据报文进行任何拆分和拼接操作
- 发送端:应用层将数据传递给传输层的 UDP 协议,UDP 只会给数据增加一个 UDP 头,表示用的是 UDP 协议,然后就传递给网络层了
- 接收端:网络层将数据传递给传输层,UDP 只去除 IP 报文头就传递给应用层,不会任何拼接操作
不可靠性
- 不可靠性体现在无连接上
- 通信不需要建立连接,想发就发
- 收到什么数据就发生什么数据,不对数据进行校验与备份
- 不关心发送端是否收到了数据
- 没有拥堵控制会以恒定的速度发送数据
- 在网络条件不好的情况下会导致丢包
高效
- UDP 的首部开销小,只有 8 个字节,比 TCP 的 20 个字节的首部要少得多
传输方式
- 一对多:单播
- 多对多:多播
- 多对一:广播
适合场景
对当前网络通讯质量要求不高的时候,实时性要求高的地方都可以看到 UDP 的身影,要求网络通讯速度尽量的快,这时就使用UDP
- 网游
- 直播
- 语音
- 视屏等等
数据报格式
- 源端口--16位
- 目的端口--16位
- 整个数据报文的长度--16位
- 检验和--16位该字段用于发现头部信息和数据中的错误
总结
- UDP 相比 TCP 简单的多,不需要建立连接,不需要验证数据报文,不需要流量控制,只会把想发的数据报文直接发送给对端
- 虽然 UDP 并没有 TCP 传输来的准确,但是也能在很多实时性要求高的地方有所作为