一、网络分层
以上为TCP/IP协议的四个分层
每层大概功能:
链路层 : 又叫数据链路层或网络接口层,通常包括设备驱动和网络接口,处理物理接口数据。包含:
- ARP协议,地址解析协议
- RARP协议,逆地址解析协议
网络层:有时候又叫着互联网层,处理网络中的活动。包括:
- IP协议(网际协议),主要被TCP/IP使用
- ICMP协议(网络控制报文协议),IP层用其与其他主机或路由器交换错误信息和其他重要信息
- IGMP协议(网络组管理协议),它用来把一个 UDP 数据报多播到多个主机
运输层: 主要为两台主机上的应用程序提供端到端的通信服务。 主要包含
- TCP协议,提供高可靠性的通信传输。
- UDP协议,提供一种简单的传输协议,不保证数据传输的准确性
应用层:负责处理特定的应用。包括:
- Telnet原程登陆服务, 对应端口:23
- FTP文件传输协议,对应端口:69
- SMTP,简单邮件传送协议
- SNMP,简单网络管理协议
二、数据报文
以太网数据帧的物理特性是其长度必须在 4 6 ~ 1 5 0 0 字节之间。
为什么呢?
- 8 0 2 . 3 规 定 数 据 部 分 必 须 至 少 为 3 8字节,而对于以太网,则要求最少要有 4 6 字 节。
- 检查冲突检查时间要求不能大于了1500个字节。MTU默认值是1500,不过现在可以通过设置最大改为9000了,得双方两端口都得设置为9000,如果一方9000一方1500,那么9000向1500发送数据就会出现丢包现象 。
这里问题来了,什么是MTU?
MTU :最大传输单元:
以太网和802.3 对数据帧的长度都有一个限制 ,其最大值分别是1500 和 1492字节
从上图可以看出:以太网最大帧长度为: 6(目的) + 6(源) +2 (类型)+ 1500 + 4(校验) = 1518 字节
三、SLIP (SerialLineIP)
串行线路IP。其规则如下:
- 数据报以一个称作END(0xC0)的特殊字符作为结束,很多实现,也会传这个字符
- 如果报文中存在0xC0这个字符,就连续传 0xDB和0X=xDD来取代它,这两个特殊字符又被叫做SPLIT和ESC字符(和ASCII中字符不想干)
- 如果这个报文中有SPLIT和ESC字符,就连续传两个相同字节来替换它
存在的问题:
- 没有CRC校验
- 无法将自己的ip传输出去。
- 数据帧中没有类型字段
改进协议:
CSLIP: 压缩SLIP 将IP和TCP首部压缩到3-5个字节 (细节去其他文献查找)
PPP点对点协议:
每一帧都以标志字符 0 x 7 e 开始和结束。紧接着是一个地址字节,值始终是 0 x ff ,然后是一 个值为 0 x 0 3 的控制字节。
1) 当遇到字符 0 x 7 e 时,需连续传送两个字符: 0 x 7 d 和 0 x 5 e ,以实现标志字符的转义。
2) 当遇到转义字符 0 x 7 d 时,需连续传送两个字符: 0 x 7 d 和 0 x 5 d ,以实现转义字符的转义。 3 ) 默 认 情 况 下 , 如 果 字 符 的 值 小 于 0 x 2 0 ( 比 如 , 一 个 A S C I I 控 制 字 符 ), 一 般 都 要 进 行 转义。例如,遇到字符 0 x 0 1 时需连续传送 0 x 7 d 和 0 x 2 1 两个字符(这时,第 6 个比特取补码后变为 1,而前面两种情况均把它变为 0)。