互联网通讯的过程
上一个话题说到了网络编程的五层网络模型。
所以该说一下互联网通讯过程具体步骤了。
当小锅买了一台新电脑,准备连上网冲浪,问题来了,应该包含什么步骤呢?
那么,小锅应该这么去做:
打开电脑的系统配置配置以下四个参数:
(1)本机IP地址
(2)本机子网掩码
(3)网关IP地址
(4)DNS服务器地址
配完这四个参数,小锅就可以网上冲浪啦。
为啥是这是四个参数呢?为啥不是别的呢?为啥必须是四个呢?听俺细细为你道来。
在我的另外一篇博文 网络通讯五层架构入门 中,我提出了,如果要访问另一台电脑,需要知道:
1)对方的IP地址
2)对方的Mac地址
如果另一台电脑不在同一个子网内,需要先访问本机所在子网的网关,如下
网络 IP地址 MAC地址
同一子网 网关IP地址 网关MAC地址
不同子网 对方电脑IP 对方电脑MAC
具体的如何实现通过以下的一个例子说明。
像上面截图手动配置IP的行为对于普通人来说比较难。所以有一个动态分配IP的选项可以给用户选择。
这个过程是通过发送给DHCP服务器来获取需要的地址和参数的。
对于本机发送的数据包而言,它要知道本机的端口号和目的机的端口号和IP地址,以及MAC地址。
那么发送的包中,
本机MAC 目的MAC 本机IP 目的机IP 本机Port 目的机Port Data
本机MAC 未知,填个FF:FF:FF:FF 未知0.0.0.0 255.255.255.255 68 67 Data
数据在子网传播的方式是广播,所以子网中所有的计算机都会收到这个数据包,但是除了DHCP服务器识别到了发送方IP是0.0.0.0,
接收方IP是255.255.255.255,会处理信息并相应外,其他设备都会丢弃这条信息。
DHCP服务器回复的响应信息
DHCPMAC 目的MAC DHCPIP 目的IP DHCP Port 目的 Port Data
DHCPMAC 目的MAC HHCPIP 255.255.255.255 67 68 包含需要的IP和其他参数(子网掩码、DNS、网关地址)
当本机收到回复,也就知道分配的IP地址,子网掩码、路由、DNS了。
说一个网络通信的例子
网络通了之后,小锅打开浏览器上网,并且输入网址:
这时本机仅知道一个ai.taobao.com的域名,并不知道对方的服务器IP地址和MAC地址。
于是本机会发送数据包给DNS服务器请求域名对应的IP地址,遵循的是DNS协议。然后,我们就知道了ai.taobao.com的域名是203.119.169.6。
在发送数据包之前要判断目的设备是否在同一个子网内,所以通过和子网掩码的对比知道对方所在的子网是203.119.169.0,本机所在的子网是
192.168.10.0,不在同一个子网里,所以数据应该发送给网关,
发送的数据包如下
本机MAC地址 网关MAC地址(通过ARP协议获取) 本机IP地址 网关IP地址 本机端口(随机) 目的机端口(http协议是80) 数据是HTTP协议的内容
包里的内容如下
假设IP数据包是5000字节,已知一个IP数据包最大为1500字节,所以应该分1500,1500,1500,560四个包发送,记得IP标头每个数据包都要有,大小是20字节。
当对方服务器收到消息后,通过http协议解析,并恢复消息,本机收到后显示相关页面。
这就是互联网协议的整个通信过程。