http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html
http://www.ruanyifeng.com/blog/2012/06/internet_protocol_suite_part_ii.html
看过之后很多概念逐渐清晰遂记录下
ARP协议:通过IP地址去拿MAC地址,只适用于同一个子网络下,通过广播将目标机器的IP地址广播到所有的子网络内的机器,目标机器收到广播后(判断IP地址是否相同)返回自己的MAC地址
路由:网关之间的通信
MAC地址:由机器的网卡唯一指定
网关:子网络的看门大爷,和外界打交道需要通过网关
“传输层”的功能,就是建立”端口到端口”的通信。
“网络层”的功能是建立”主机到主机”的通信。只要确定主机和端口,我们就能实现程序之间的交流。
“应用层”的作用,就是规定应用程序的数据格式。
同一个子网络发送数据需要知道目标机器的MAC地址
非一个子网络发送数据需要知道目标机器的IP地址和网关的MAC地址
IP地址可变,而MAC地址不可变,通过IP地址能够较快的找到目标机器的子网络
例子:
假设网络上要将一个数据包(名为PAC)由北京的一台主机(名称为A,IP地址为IP_A,MAC地址为MAC_A)
发送到华盛顿的一台主机(名称为B,IP地址为IP_B,MAC地址为MAC_B)。
这两台主机之间不可能是直接连接起来的,因而数据包在传递时必然要经过许多中间节点(如路由器,服务器等等),
我们假定在传输过程中要经过C1、C2、C3(其MAC地址分别为M1,M2,M3)三个节点。
A在将PAC发出之前,先发送一个ARP请求,找到其要到达IP_B所必须经历的第一个中间节点C1的MAC地址M1,
然后在其数据包中封装(Encapsulation)这些地址:IP_A、IP_B,MAC_A和M1。当PAC传到C1后,
再由ARP根据其目的IP地址IP_B,找到其要经历的第二个中间节点C2的MAC地址M2,然后再将带有M2的数据包传送到C2。
如此类推,直到最后找到带有IP地址为IP_B的B主机的地址MAC_B,最终传送给主机B。
在传输过程中,IP_A、IP_B和MAC_A不变,而中间节点的MAC地址通过ARP在不断改变(M1,M2,M3),直至目的地址MAC_B。
电脑上网必须有四个参数
1)本机IP地址
2)子网掩码
3)网关IP地址
4)DNS服务器IP地址
本机访问Google全过程
1)将域名发送到DNS服务器,DNS服务器返回域名对应的IP地址(Google的IP地址)
2)将当前服务的端口和目标服务器程序的端口写到TCP头中
3)将当前主机的IP地址和目标服务器端IP地址写到IP头中
4)通过子网掩码判断Google的IP地址和本机的IP地址是否在同一个子网络中
5)如果在同一个子网络中,那么通过ARP协议去获取Google的MAC地址,然后写到以太协议的Header中 end
如果不在同一个子网络中,那么通过ARP协议获取网关的MAC地址并写入以太协议的Header中
6)本机所在网络的网关通过路由将数据发送到Google所在子网络的网关
7)Google的网关将数据发到Google的服务器上(在这之前要先找到Google的MAC地址)
使用wireshark软件抓到的一次HTTP请求,很多东西更清晰了,值得注意点几个点
1)可以清楚地看到三次握手(这里抓到了两次请求)
2)仔细观察收到的HTTP包,可以清楚地看到层级结构,以太协议-IP-TCP-HTTP-数据包
3)数据传输阶段ACK = SEQ+TCP SEGMENT
4)152是对151的回应,表示收到了你的消息;同理154是对153的回应表示收到了你的消息