1、两主机直连传输数据包过程
需要协议:tcp/ip 协议 、arp协议。
tcp/ip 四层:
4应用层 telnet、ftp、http、smtp、dns
3传输层 tcp、udp
2网络层 ip、icmp、arp、rarp
1数据链路层
注意:主机的arp表内容有:mac和ip
连接示意图:
左边是主机A
主机A:
应用层:我要和主机B建立可靠连接,并发送数据。
传输层:那我将用tcp,需要网络层将tcp syn发送给主机B
网络层:可是我的宝贝arp没有主机B的映射,先把数据包放在停车场等有映射了我再来取。
arp:那我发送个arp广播找主机B,B收到会恢复arp响应的 下面是arp广播格式:
主机B:
网络层:我收到个arp广播 我要转给arp
arp:收到主机A的mac和ip 让我添加到 arp表 然后我再应答。下面是应答格式:
主机A:
网络层:收到个arp,让我交给arp处理。
arp:好了收到B的 应答了 让我把B的IP和mac添加进arp表。然后告诉网络层我有B的映射了。
网络层:取出停车场的数据包发给B, 下面是格式:
这时B需要发送 syn ack 包 然后 A再发送 syn ack 包 完成三次握手 建立会话。
会话建立完成之后 就可以畅通的发送应用层数据包了:
A 发送数据包的格式:
B 回复的格式:
2、通过交换网络传播数据包
连接示意图:
左边是主机A。
交换机左边的端口是1。
注意:交换机的arp表中只有:mac和端口。
和上边的区别是多了个交换机, 主机A和B发送的数据包和上面一样。
交换机在此起到的作用:
1、遇到A发送的arp广播,交换机先将A的 mac和所在交换机端口的信息添加到表中。
2、然后将arp广播泛红到所有端口除了A所在的端口1。
3、B收到之后,发送arp应答包
4、交换机收到之后先把B的信息添加到表中,再把应答包转发给A。
3、通过路由网络传输数据包
连接示意图:
左边为A。
路由器左边的端口是1
注意:路由器 arp表中只有 ip和mac
主机A:
A要给B发送数据包,经arp判断不在一个网段,所以要寻找默认网关有网关的ip却没有mac。
arp:我要发送广播帧如下: src mac是A的mac
路由器:
收到广播,将A的信息加入arp表,然后给A应答。
主机A:
收到应答 将路由器信息加入到arp表。
然后向路由器发送数据包ip是主机B的ip。 格式如下:
路由器:
路由器:收到包 发现IP不是自己 所以应该路由之。2端口可以将包发送给B。
路由器:2端口请发送包!
2端口:好嘞,可是没有B的mac地址 那我将发送 arp广播包。
1、然后B将发送应答包。
2、然后路由器将B的信息加入到arp表。
3、主机B也有了默认路由。
4、路由器2端口给B发送数据包,源ip和mc为2端口的IP和mac。如下所示: