互联网协议学习笔记

来源:互联网 发布:linux c 获取系统时间 编辑:程序博客网 时间:2024/06/05 01:18

互联协议学习笔记

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

  • 互联协议学习笔记
    • OSI模型
    • TCPIP协议组的体系结构
    • 互联网协议的通信过程
      • 设置上网参数
        • 静态IP地址
        • 动态IP地址
      • HTTP请求数据Data
      • TCP段Segments
      • IP包Packets
      • 以太网帧Frames
      • 发送请求并接受HTTP响应


OSI模型

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

OSI模型

TCP/IP协议组的体系结构

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

TCP/IP协议组的体系结构

互联网协议的通信过程

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

互联网协议的通信过程

下面一步一步来解释。

设置上网参数

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

  • 本机的IP地址
  • 子网掩码
  • 网关的IP地址
  • DNS的IP地址

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

静态IP地址

在Windows操作系统下设置静态IP地址,这样每次上网都使用同样的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.1Host: www.google.comConnection: keep-aliveUser-Agent: Mozilla/5.0 (Windows NT 6.1) ......Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Encoding: gzip,deflate,sdchAccept-Language: zh-CN,zh;q=0.8Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3Cookie: ... ...

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响应后就可以将网页显示出来,至此网络通信完成。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机网速不给力怎么办 xp系统登录密码忘了怎么办 手机百度云网络出错怎么办 百度账号提示异常风险怎么办 刷xp框架卡米怎么办 全民k歌歌曲下架怎么办 全民k歌伴奏下架怎么办 苹果手机图片的图标打不开怎么办 电脑页面加载不出来怎么办 电脑主页面加载不出来怎么办 桌面图标不见了怎么办右键无反应 手机一直闪退该怎么办 点击华为设置闪退怎么办 小白摄像头获取视频文件失败怎么办 为什么解压文件老提示失败怎么办 b站sd卡写入失败怎么办 手机检测不到sd卡怎么办 华为sd卡不可用怎么办 u盘延缓写入失败怎么办 手机提示sd卡不可用怎么办 显示sd卡不可用怎么办 小米手机检测不到sd卡怎么办 小米手机sd卡写入失败怎么办 没有检测到sd卡怎么办 e站图片配额用尽怎么办 内存卡密码忘了怎么办 电脑上酷狗音乐播放失败怎么办 播放失败不支持该文件怎么办 手机山寨云资源失效怎么办 支付密码输错了怎么办 微信密码锁定了怎么办 电脑网易云音乐闪退怎么办 逆战耳机电流声怎么办 肠道感染一直吃药治不好怎么办 如果24小时以后还没到账该怎么办 在游戏平台充值没到账该怎么办 充值豪华黄钻没到账该怎么办 起点签到签满了怎么办 ipad锁屏声音小怎么办 扣扣邮箱文件超大了怎么办 网易邮箱图片已过期怎么办