计算机网络笔记

  1. ?
    1. 网络层
    2. 运输层
  2. ??
  3. 计算机网络和因特网

?

物理层-以太网帧

数据链路层-MAC帧-添加了首部和尾部-FCS校验

网络层-IP数据报-首部校验和

传输层-报文,流

数据链路层

封装成帧
帧首部SOH, 01H
帧尾部EOT, 04H

透明传输
数据部分出现 01H和04H以及1BH 在前面增加转义字符ESC 1BH

差错检测
CRC校验
FCS冗余码

PPP协议
7EH 帧首帧尾

网络层

网络层-数据报
数据链路层-MAC帧

网络层向上只提供 简单灵活的 无连接的 尽最大努力交付 的 数据报服务

地址解析协议ARP
网际控制报文协议 ICMP
网际组管理协议 IGMP

转发器-物理层使用的中间设备
网桥或桥接器-数据链路层使用的中间设备
路由器-网络层中间设备
网关-网络层以上使用的中间设备

一个路由器互联的多个局域网网络中-网络层及以上高层协议必须相同 而物理层和数据链路层则可不同(p116)
IP地址用于网络层及以上高层 MAC地址用于数据链路层和物理层

路由器转发的时候 源和目的MAC都变化, 然而源和目的IP变化 p118 p123

互联网名字和数字分配机构ICANN进行分配

IP地址编址的三个阶段

  • 分类的IP地址
    IP地址由网络号-主机号构成
类别 范围 网络号固定部分 总网络号位数 主机号位数
A类 1-126 0 7+1位 主机号24位
B类 128-191 10 2+14位 主机号16位
C类 192-223 110 3+21位 主机号8位
D类 224-239 1110 多播地址
E类 240-255 1111 保留

A类

2^7-2

网络号全0 表示本网络
网络号 0111 1111 127 代表本地换环回(你压根没被当做网络地址, 上表中跳过了127)

2^24-2

主机号全0 表示本主机连接的网络地址
主机号全1 代表该网络上的所有主机

B类

2^14-1

扣除了128.0.0.0 从128.1.0.0开始

2^16-2

抛去主机号全0和全1 原因同上

C类

2^21-1

扣除了192.0.0.0 从192.0.1.0开始

2^8-2

扣除全0和全1原因同上

其他特殊IP
10.*.*.* 172.16.*.*-172.31.*.* 192.168.*.* - 三个私有地址网段 用于私网

子网的划分

将B类地址主机号前面几个字作为子网号 划分子网 将二级地址转化为三级地址
现有B类地址145.13.0.0取八位作为子网145.13.1.0为一个子网 主机号剩下8位

子网掩码

145.13.1.3到达路由器145.13.0.0(描述不恰当)后 如何将其转发到子网145.13.1.0
使用子网掩码AND运算得到网络地址
子网掩码子网数子网主机数p138

@划分子网情况下分组转发算法p140@

构成超网

变长子网掩码VLSM(Variable Length Subnet Mask)
在其基础上研究出无分类编址方法-无分类域间路由选择CIDR(Classless Inter-domain Routing)
128.14.35.7/20 表明前20位是网络前缀
成为/20地址块
@变长子网掩码划分子网@

用CIDR地址块来查找目的网络 这种地址的聚合常称为聚合路由也称为构成超网

从匹配结果总选择具有最长网络前缀的路由-最长前缀匹配

IP数据报格式

0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| IHL |Type of Service| Total Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identification |Flags| Fragment Offset |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Time to Live | Protocol | Header Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

IHL: 首部长度 最大 2^4-1 = 15 单位四字节
最小是5 即最小首部为20字节
最大15 即最大为60字节

Total Length: 总长度 最大 2^16-1 = 65535 单位一字节
以太网最大数据帧 1518 抛去14头部 4字节校验 剩余1500即为MTU 数据(链路层)的数据字段最大长度

flags: 标识
第一位MF MF=1标识还有分片 DF=1标识不能分片

Fragment Offset: 片偏移 单位八字节
13位

@分片计算 p129@

Time to Live: 生存时间
先减1再判断是否为0, 为0则丢弃

Protocol: 协议
常用 TCP-6 UDP-17

Header Checksum: 首部校验和 不包括数据部分
每次经过路由器都可能变化 生存时间标志片偏移可能变化


首部分为很多16位字的序列 先将原校验和清零 在将所有序列求反码相加 再求反码写入校验和
接收方将所有序列 求反码相加(这里不将校验和清零) 得到的和取反码 必须为零

IP数据报的可选部分无分隔符 最后需要用全0的字段补齐为 四的整数倍

分组转发算法
@路由器路径 与路由表下一跳地址 p132@

同页特定主机路由和默认路由 下一页分组转发算法

ICMP略

互联网路由选择协议

运输层

网络层为主机之间提供逻辑通信, 而传输层为应用程序之间提供端到端的逻辑通信

熟知端口号 - 0~1023 - 服务器端

登记端口号 - 1024~49151 - 提供给没有熟知端口号使用

短暂端口号 - 客户端

复用分用的关键 对下使用了IP数据报头部的字段Protocol 以及 对上端口号的使用

UDP数据报 TCP报文段
UDP是无连接的, 不可靠的, 基于数据报
TCP是面向连接的, 可靠的, 基于流的服务
(可靠 无差错, 不丢失, 不重复, 按序到达)

用户数据报协议 UDP User Datagram Protocol

0      7 8     15 16    23 24    31
+--------+--------+--------+--------+
| source address |
+--------+--------+--------+--------+
| destination address |
+--------+--------+--------+--------+
| zero |protocol| UDP length |
+--------+--------+--------+--------+


0 7 8 15 16 23 24 31
+--------+--------+--------+--------+
| Source | Destination |
| Port | Port |
+--------+--------+--------+--------+
| | |
| Length | Checksum |
+--------+--------+--------+--------+
|
| data octets ...
+---------------- ...

User Datagram Header Format

UDP length 同 Length: 最小值为8(仅包含首部 无数据)
Checksum: 校验和 使用 伪首部 首部 数据 计算出
校验了源和目的端口和地址

protocol: udp为17 tcp为6

伪首部12字节, 既不向下传递, 也不向上递交 仅仅为了计算校验和

@校验和计算 p210@
@TCP和UDP交付IP层的分片@
同样16B一组

传输控制协议 TCP Transmission Control Protocol

为了传输的可靠性使用了下面的协议
自动重传请求ARQ
超时重传:每次发送完设置超时计时器, 超时之前收到确认就取消定时器, 否则到期后重发,并重置定时器。

收到重复报文:A发送后B的回复丢失,A重发报文。丢弃重复的报文, 并向对方发送确认,而不能认为之前发送过就不发送了。
收到迟到的确认报文:丢弃, 什么也不做。

停止等待协议 流水线传输协议
使用流水线传输协议 就要使用 连续ARQ协议 和 滑动窗口协议

连续ARQ协议
可以连续发送五个连续分组 而不需要对方的确认

每收到一个确认,发送窗口就向前滑动。如果原来发送了五个分组就可以发送第六个分组了。
累计确认: 对按序到达的最后一个分组发送确认,表示到这个分组为止的所有分组都收到了。
GO-back-N:如果中间第三个分组丢失,接收方只能发送前两个分组的确认,发送方需要发送后面三个分组。

滑动窗口协议

拥塞控制
@p232 拥塞控制方法 画图和慢开始 拥塞避免 快恢复@

超时重传时间确认

报文往返时间RTTS
新的RTTS = (1-a) x 旧RTTS + a x 新RTTS
a = 0.125

超时重传时间
RTO = RTTS + 4 x RTTD

RTTD = (1 - b) x 旧RTTD + b x | RTTS - 新的RTT |
b = 0,25

karn算法 只要报文段重传就不采用其往返时间
修正 每重传一次新的时间为旧的2倍

0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Port | Destination Port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Acknowledgment Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data | |U|A|P|R|S|F| |
| Offset| Reserved |R|C|S|S|Y|I| Window |
| | |G|K|H|T|N|N| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Checksum | Urgent Pointer |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

seq: 序号
报文的序号和ack的对应关系

ack: 确认号
确认号为N 表明, 到序号N-1的所有数据都收到

数据偏移: 单位是四字节
头部长度 最少是20字节 最大是60字节 所以该项最少为5

URG: 紧急标识
如果TCP发送缓冲区有很多数据, 但需要紧急发送某个命令. 正常情况下会加在缓冲区位
如果设置了标识, 则插入到最前边

ACK: 确认号
TCP规定, 建立连接后所有的报文段ACK都设置为1
可以携带数据 不携带数据则不会消耗 报文号

PSH: 推送
接收方收到该标识后 将数据尽快提交到应用程序, 而不是等缓冲满了提交

RST: 复位
说明TCP连接出现严重差错 必须重新建立连接

SYN: 同步
连接建立时用来同步序号
含有此标记 不能携带数据 但仍要消耗一个序列号

FIN: 终止连接

窗口:
发送本报文段一方的接收窗口

检验和:
需要加上12字节的伪首部
检验和计算

紧急指针:
指明报文段中紧急数据的字节数

MSS: 最大报文段长度, 指的是数据字段的最大长度

MSS一般为1460 MTU1500 - 20IP包头 - 20TCP包头

@tcp连接的建立和断开 p238@

??

协议

语法:规定格式

语义:规定格式总填充字段的含义

顺序:规定了何时通信,先讲什么后讲什么

IP地址是分层的,可以帮助缩小定位范围。

MAC地址则不确定在网络中的位置

MAC地址制定的是下一跳的地址,而IP地址则是指明的源和目的IP地址。每次跳中,目的和源MAC地址都会被更改,而IP则保持不变。

计算机网络和因特网

运输层-报文段-应用程序端点之前传送报文

网络层-数据报-将数据报从一台主机移动到另一台主机

链路层-帧-将分组从一个主机移动到路径上的下一个节点

物理层-将帧中的一个个比特从一个节点移动到下一个节点

链路层交换机-实现了第一层和第二层,不能识别IP地址

路由器-实现了第一层 第二层和第三层

主机-所有的五层-以太网体系结构中 将其复杂性放在网络边缘


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。