在浏览器中输入www.baidu.com,意味着浏览器所在的主机要向百度所在的服务器发送一个http请求的数据包。此时数据进行第一层封装,成为http包。加上所在的端口号,封装成第二层的TCP包。浏览器根据DNS库,找到该网址对应的IP地址,加上自己的IP地址,进行第三层的封装,成为IP包。根据IP地址,判断是否处于同一子网,发送广播,获取对应主机或网关的MAC地址,加上自己的MAC地址,封装成第四层包:以太包。同时浏览器与百度服务器建立TCP连接,进行TCP的三次握手,确认数据可以发送后,通过物理层将电信号转换成光信号,最终传输到百度服务器。
以上过程,数据相继通过应用层、传输层、网络层、链路层的层层封装,通过物理层利达目的地。
倒过来看,物理层,是肉眼能够看到的通讯设备,包括网卡、中继器、光缆、电缆、双绞线等;
当光信号被转换成电信号0和1,需要按照链路层的以太网协议,对这些0和1进行分组,一组就是一个包,每个包都有head和data,head附加上发送者和接收者以及数据类型,data装着被传输的数据,被从一台主机传送到另一台主机。head的长度固定为18字节,data最长为1500字节,数据如果超过了这个长度,就会被分割成多个包;
主机找到主机,需要一个IP地址,还需要一个MAC地址。
规定IP地址的协议,为IP协议。根据IP协议,需要将数据封装成IP包,放在以太包的data里。IP包也有自己的head,包括协议的版本、IP地址等。
MAC地址即网卡地址,每一台主机的MAC地址都是唯一的。
通常情况下IP地址是已知的。根据IP地址,可以判断发送者和接收者是否处于同一子网。
如果不在同一子网,需要通过子网连接处的网关来处理。比如A发送数据给B,A交给本网络中的网关,根据路由协议,A网关找到B网关,B网关再找到子网。
如果处于同一子网,将通过ARP协议发送一个带着IP地址的数据包,通过广播的方式比对子网中的所有主机的IP地址,找到符合该IP的主机,拿到该主机的MAC地址。最后发送数据。
数据到底是发给主机上的哪个进程?需要通过端口号判断。此时数据抵达传输层。端口号放在TCP数据包里。
网友评论