您的位置:首页 > 业界新闻

互联网协议学习笔记

2017-08-21 10:16 169 查看

互联协议学习笔记

参考互联网协议入门(一)互联网协议入门(二)这两篇文章还有一些其他的网络文章,整理出一个简洁的框架,希望能够一目了然方便今后的查阅与深入。

互联协议学习笔记
OSI模型

TCPIP协议组的体系结构

互联网协议的通信过程
设置上网参数
静态IP地址

动态IP地址

HTTP请求数据Data

TCP段Segments

IP包Packets

以太网帧Frames

发送请求并接受HTTP响应

OSI模型

互联网的实现,分成好几层。每一层都有自己的功能,就像建筑物一样,每一层都靠下一层支持。



TCP/IP协议组的体系结构

TCP/IP协议组的体系结构如图:



互联网协议的通信过程

为了简化,将OSI模型中的5层、6层和7层合在一起称为应用层。简化后的通信过程如下图:



下面一步一步来解释。

设置上网参数

假设你新买了一台电脑,插上网线,开机,打开浏览器,这时候还不能访问网页,需要设置四个参数:

本机的IP地址

子网掩码

网关的IP地址

DNS的IP地址

这四个参数如何设置呢?有两个方法:

静态IP地址

在Windows操作系统下设置静态IP地址,这样每次上网都使用同样的IP地址。



动态IP地址

电脑开机后使用DHCP协议自动分配IP地址,这样每次上网都使用不同的IP地址。

DHCP协议规定,每一个子网络中,有一台计算机负责管理本网络的所有IP地址,叫做DHCP服务器。新的计算机加入网络,必须向DHCP服务器发送DHCP请求数据包,申请IP地址和相关网络参数。

DHCP应用层协议,建立在UDP协议之上。

以太网标头 设置发出方(本机)的MAC地址和接收方(DHCP服务器)的MAC地址。前者就是本机网卡的MAC地址,后者这时不知道,就填入一个广播地址:FF-FF-FF-FF-FF-FF。

IP标头 设置发出方的IP地址和接收方的IP地址。这时,对于这两者,本机都不知道。于是,发出方的IP地址就设为0.0.0.0,接收方的IP地址设为255.255.255.255。

UDP标头 设置发出方的端口和接收方的端口。这一部分是DHCP协议规定好的,发出方是68端口,接收方是67端口。

这个数据包构造完成后,就可以发出了。以太网是广播发送,同一个子网络的每台计算机都收到了这个包。因为接收方的MAC地址是FF-FF-FF-FF-FF-FF,看不出是发给谁的,所以每台收到这个包的计算机,还必须分析这个包的IP地址,才能确定是不是发给自己的。当看到发出方IP地址是0.0.0.0,接收方是255.255.255.255,于是DHCP服务器知道”这个包是发给我的”,而其他计算机就可以丢弃这个包。

接下来,DHCP服务器读出这个包的数据内容,分配好IP地址,发送回去一个”DHCP响应”数据包。这个响应包的结构也是类似的,以太网标头的MAC地址是双方的网卡地址,IP标头的IP地址是DHCP服务器的IP地址(发出方)和255.255.255.255(接收方),UDP标头的端口是67(发出方)和68(接收方),分配给请求端的IP地址和本网络的具体参数则包含在Data部分。

新加入的计算机收到这个响应包,于是就知道了自己的IP地址、子网掩码、网关地址、DNS服务器等等参数。

HTTP请求数据(Data)

网络设置好了以后就可以开始访问网页了,打开浏览器输入网址www.google.com回车。这意味这要使用HTTP协议向Google发送一个网页请求数据(Data)。

HTTP请求数据的部分内容类似于下面这样:

GET / HTTP/1.1
Host: www.google.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1) ......
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
Cookie: ... ...


TCP段(Segments)

HTTP协议是建立在TCP协议之上的,所以要将网页请求数据(Data)嵌入到TCP段(Segments)中。TCP标头需要设置端口,HTTP端口默认是80,发送方端口是一个随机数字。

UDP段(Segments)的标头为8字节,总长度最大为65535字节。

TCP段(Segments)的标头为20字节,总长度没有长度限制。

IP包(Packets)

将TCP报文(Segments)嵌入到IP包(Packets)中。IP标头需要设置双方的IP地址,本机的IP地址已知,接收方的IP地址未知,此时需要通过DNS协议获取接收方的IP地址。已知DNS服务器的IP地址192.168.0.1,于是我们向这个地址发送一个DNS数据(Data),然后DNS服务器会返回Google的IP地址172.194.72.105。

DNS应用层协议,建立在UDP协议之上,端口默认是53。

IP包(Packets)的标头为20字节到60字节,总长度最大为65535字节。如果TCP段(Segments)过长,需要将TCP段(Segments)进行分割。

以太网帧(Frames)

将IP包(Packets)嵌入到以太网帧(Frames)中。以太网标头需要设置双方的MAC地址,本机的MAC地址已知,接收方的MAC地址未知,此时先通过子网掩码判断接收方与本机是否在同一子网络,如果在同一子网络可直接设置接收方的MAC地址,如果不在同一子网络接收方的MAC地址需设置为网关的MAC地址。

已知子网掩码255.255.255.0,本机的IP地址192.168.0.198,做一个二进制的AND运算得出网络地址为192.168.0.0;Google的IP地址172.194.72.105,做一个二进制的AND运算得出网络地址为172.194.72.0。

网络地址不同所以Google与本机不在同一个子网络。因此,我们要向Google发送数据包必须通过网关的转发,即在以太网标头中接收方的MAC地址设置为网关的MAC地址。网关的MAC地址通过ARP协议获得。

ARP协议是网络层协议,可以获取同一子网络中其他主机的MAC地址。根据以太网协议,本机通过广播的方式向同一子网络的所有主机发送ARP数据包,目标主机收到包后返回自己的MAC地址。

以太网帧(Frames)的标头固定为18字节,数据为46字节到1500字节。如果IP包(Packets)过长,需要将IP包(Packets)进行分割。

发送请求并接受HTTP响应

数据包准备好后,经过多个网关的转发,Google的服务器收到数据包。根据IP标头的序号,Google将包拼起来,取出TCP报文(Segments),读出里面的HTTP请求数据(Data),接着做出HTTP响应,再用TCP协议发过来。本机浏览器收到HTTP响应后就可以将网页显示出来,至此网络通信完成。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  互联网协议