2.1 TCP/IP协议簇
2.2 应用层
2.3 主机到主机层
2.3.1 TCP/UDP
TCP头:源端口号、目端口号、序列号(分段后保证对方收到有序)、确认号(确保可靠传输行为)…..。
UDP头:源端口、目端口…..。无法保证可靠连接
- 端口号:1-65535(2字节);
- 比如:IP地址相当于商定门牌号,不同窗口(端口)卖不同的东西。
- 访问http://www.163.com相当于http://www.163.com:80
- 第一步:A随机生成序列号seq,SYN标记TCP报文是初始化同步位。(TCP头部SYN标志位置为1);
- 第二步:B收到SYN后,知道是打招呼的,建立TCP连接。应答确认报文,随机产生新的序列号,同时应答A的确认序列号+1,设置同步和应答标志。
- 第三步:将B的确认号作为序列号,将B的序列号+1作为确认号,设置确认号标志位。
源端口号随机分配,访问23端口,对应的TELNET服务。
窗口机制:弹性处理。
- 第一步:A发了3条消息给B;
- 第二步:B应答时ACK为3,表示希望收到下一条序号为3,同时将大小设置为2 ,告诉A,B一次只能处理两条消息;
- 第三步:A收到后,知道B只能同时处理两条消息,所以重发3,并接着发4,连发2条消息;
- 第四步:B收到两条消息后,告诉A,下一条序号为5;
2.4 因特网层
网际互联协议IP:负责三层转发和路由。
- 主要协议:
- ICMP:如PING;
2.4.1 IP协议
- TTL:避免无休止跳转;
- 协议号:识别上层协议;
2.4.2 ARP协议
- 通过IP地址寻找MAC地址;
- ARP表:关联MAC和IP表;
- MAC地址又称为物理地址,路由器端口、交换机端口、网卡都有MAC地址;
- MAC地址是二层地址,LAN传输使用;
- IP地址是三层寻址,网络间路由和寻址;
命令:arp –a可以查看arr表
- 最开始ARP表示空的;
- PC1想出外网,先需要把帧送到网关,就得知道网关MAC地址;
- PC1发ARP包请求MAC地址,目标MAC不知道时先填0;
- 该报文会广播给所有人,因为目标MAC地址是全FF;
- 网关和PC2都会收到这个广播帧,但是PC2会忽略(目标IP地址不是PC2的),而网关会接受。
- 网关应答PC1的ARP请求,将自己的MAC地址和IP返回。
- 至此,PC1知道了网关的MAC地址。
- 通过ARP的广播,域内就都互相知道了对方的MAC地址和IP对应关系,维护自己的ARP表项。
- ARP表项是动态的,会定时更新,一旦重启,会清空,需要重新请求更新。
2.4.3 Ping(ICMP)
基于ICMP协议的ping工具;
2.4.4 Traceroute/Tracert
多路径是,追踪路径
2.5 问题1
PCA Telnet PCB过程:CS模式
- 构建应用层数据包;
- 传输层添加TCP头:源端口号(随机)+目的端口号(23);
- 网络层添加IP头:源IP(PCA IP)+目的IP(PCB IP);
- 链路层添加帧头:初始不知道网关MAC地址的情况下,发送ARP广播请求网关MAC地址;封帧源MAC地址(PCA MAC)+目的MAC地址(网关左边MAC)
- 路由器收到帧后,查看帧目标MAC是自己的,接着拆包,查看目标IP地址,发现目标IP地址是PCB,不是自己的,也就是说帧是给自己的,但是IP包不是给自己的。
- 路由器接着封帧,初始时路由器不知道PCB的MAC地址,还需要发ARP广播获取PCB的MAC地址。接着封帧源MAC地址(网关右边MAC)+目的MAC地址(PCB MAC)
- PCB收到帧后,对比目标MAC地址是自己的,然后解帧,对比IP地址,发现IP地址也是自己的,就知道这个包是发给自己的。
- 接着解帧,获取端口号,发现是TELNET服务; 交给TELNET服务程序。