文章目录
0. 前言
前面我们讲了,应用层、传输层;本章讲网络层。
- 应用层:我们现在知道我们的数据并不是直接发到网络上的。
- 传输层:控制数据的发送,也就是协议—TCP/UDP
- 网络层:具体执行的机构。
例子:
- 现实生活中,物流公司要求一次只能帮忙运送3公斤的东西;可是我的电脑有十公斤,怎么办哪???肯定是把电脑拆开,分别运送,然后通过物流公司帮我们配送到目的地。
- 这个例子中传输层就代表我们用户,数据链接层代表物流公司。
网络层:
- 在复杂的网络环境中确定一个合适的路径。
1. IP协议
1-1 基本概念
- 主机: 配有IP地址, 但是不进行路由控制的设备; 路由器: 即配有IP地址, 又能进行路由控制;
- 节点: 主机和路由器的统称。
1-2 协议头格式
- 4位版本号(version): 指定IP协议的版本, 对于IPv4来说, 就是4;
- 4位头部长度(header length): IP头部的长度是多少个32bit, 也就是 length * 4 的字节数. 4bit表示最大的数字是15, 因此IP头部最大长度是60字节;
- 8位服务类型(Type Of Service): 3位优先权字段(已经弃用), 4位TOS字段, 和1位保留字段(必须置为0). 4位TOS分别表示: 最小延时, 最大吞吐量, 最高可靠性, 最小成本. 这四者相互冲突, 只能选择一个,对于ssh/telnet这样的应用程序, 最小延时比较重要; 对于ftp这样的程序, 最大吞吐量比较重要。
- 16位总长度(total length): IP数据报整体占多少个字节.
- 16位标识(id): 唯一的标识主机发送的报文. 如果IP报文在数据链路层被分片了, 那么每一个片里面的这个id都是相同的。
- 3位标志字段: 第一位保留(保留的意思是现在不用, 但是还没想好说不定以后要用到). 第二位置为1表示禁止分片, 这时候如果报文长度超过MTU, IP模块就会丢弃报文. 第三位表示"更多分片", 如果分片了的话,最后一个分片置为0, 其他是1. 类似于一个结束标记;
- 13位分片偏移(framegament offset): 是分片相对于原始IP报文开始处的偏移. 其实就是在表示当前分片在原报文中处在哪个位置. 实际偏移的字节数是这个值 * 8