程序员内功修炼 计算机网络 互联⽹协议⼊⻔(下)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了程序员内功修炼 计算机网络 互联⽹协议⼊⻔(下),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含6146字,纯文字阅读大概需要9分钟。
内容图文
![程序员内功修炼 计算机网络 互联⽹协议⼊⻔(下)](/upload/InfoBanner/zyjiaocheng/611/2164a55a1deb4fa7ac4c1fe73c383dd1.jpg)
上?篇?章分析了互联?的总体构思,从下?上,每?层协议的设计思想。
这是从设计者的?度看问题,今天我想切换到?户的?度,看看?户是如何从上?下,与这些协议互动的。
目录
1、?个?结
先对前?的内容,做?个?结。
我们已经知道,?络通信就是交换数据包。电脑A向电脑B发送?个数据包,后者收到了,回复?个数据包,从?实现两台电脑之间的通信。数据包的结构,基本上是下?这样:
发送这个包,需要知道两个地址:
(1) 对?的MAC地址
(2) 对?的IP地址
有了这两个地址,数据包才能准确送到接收者?中。但是,前?说过,MAC地址有局限性,如果两台电脑不在同?个??络,就?法知道对?的MAC地址,必须通过?关(gateway)转发。
上图中,1号电脑要向4号电脑发送?个数据包。它先判断4号电脑是否在同?个??络,结果发现不是(后?介绍判断?法),于是就把这个数据包发到?关A。?关A通过路由协议,发现4号电脑位于??络B,?把数据包发给?关B,?关B再转发到4号电脑。
1号电脑把数据包发到?关A,必须知道?关A的MAC地址。所以,数据包的?标地址,实际上分成两种情况:
发送数据包之前,电脑必须判断对?是否在同?个??络,然后选择相应的MAC地址。接下来,我们就来看,实际使?中,这个过程是怎么完成的。
2、?户的上?设置
2.1静态IP地址
你买了?台新电脑,插上?线,开机,这时电脑能够上?吗?
通常你必须做?些设置。有时,管理员(或者ISP)会告诉你下?四个参数,你把它们填?操作系统,计算机就能连上?了:
(1) 本机的IP地址
(2) ?掩码
(3) ?关的IP地址
(4) DNS的IP地址
下图是Windows系统的设置窗?。
这四个参数缺?不可,后?会解释为什么需要知道它们才能上?。由于它们是给定的,计算机每次开机,都会分到同样的IP地址,所以这种情况被称作"静态IP地址上?"。
但是,这样的设置很专业,普通?户望??畏,?且如果?台电脑的IP地址保持不变,其他电脑就不能使?这个地址,不够灵活。出于这两个原因,?多数?户使?"动态IP地址上?"。
2.2动态IP地址
所谓"动态IP地址",指计算机开机后,会?动分配到?个IP地址,不??为设定。它使?的协议叫做DHCP协议。
这个协议规定,每?个??络中,有?台计算机负责管理本?络的所有IP地址,它叫做"DHCP服务器"。新的计算机加??络,必须向"DHCP服务器"发送?个"DHCP请求"数据包,申请IP地址和相关的?络参数。
前?说过,如果两台计算机在同?个??络,必须知道对?的MAC地址和IP地址,才能发送数据包。但是,新加?的计算机不知道这两个地址,怎么发送数据包呢?
DHCP协议做了?些巧妙的规定。
DHCP协议
?先,它是?种应?层协议,建?在UDP协议之上,所以整个数据包是这样的:
(1)最前?的"以太?标头",设置发出?(本机)的MAC地址和接收?(DHCP服务器)的MAC地址。前者就是本机?卡的MAC地址,后者这时不知道,就填??个?播地址:FF-FF-FF-FF-FF-FF。
(2)后?的"IP标头",设置发出?的IP地址和接收?的IP地址。这时,对于这两者,本机都不知道。于是,发出?的IP地址就设为0.0.0.0,接收?的IP地址设为255.255.255.255。
(3)最后的"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服务器等等参数。
2.3上?设置:?结
这个部分,需要记住的就是?点:不管是"静态IP地址"还是"动态IP地址",电脑上?的?要步骤,是确定四个参数。这四个值很重要,值得重复?遍:
(1) 机的IP地址
(2) ??掩码
(3) ?关的IP地址
(4) DNS的IP地址
有了这?个数值,电脑就可以上?"冲浪"了。接下来,我们来看?个实例,当?户访问??的时候,互联?协议是怎么运作的。
3、?个实例:访问??
3.1本机参数
我们假定,经过上?节的步骤,?户设置好了??的?络参数:
(1) 本机的IP地址:192.168.1.100
(2) ??掩码:255.255.255.0
(3) ?关的IP地址:192.168.1.1
(4) DNS的IP地址:8.8.8.8
然后他打开浏览器,想要访问Google,在地址栏输?了?址:www.google.com。
这意味着,浏览器要向Google发送?个??请求的数据包。
3.2DNS协议
我们知道,发送数据包,必须要知道对?的IP地址。但是,现在,我们只知道?址www.google.com,不知道它的IP地址。
DNS协议可以帮助我们,将这个?址转换成IP地址。已知DNS服务器为8.8.8.8,于是我们向这个地址发送?个DNS数据包(53端?)。
然后,DNS服务器做出响应,告诉我们Google的IP地址是172.194.72.105。于是,我们知道了对?的IP地址。
3.3??掩码
接下来,我们要判断,这个IP地址是不是在同?个??络,这就要?到??掩码。
已知??掩码是255.255.255.0,本机?它对??的IP地址192.168.1.100,做?个?进制的AND运算(两个数位都为1,结果为1,否则为0),计算结果为192.168.1.0;然后对Google的IP地址172.194.72.105也做?个AND运算,计算结果为172.194.72.0。这两个结果不相等,所以结论是,Google与本机不在同?个??络。
因此,我们要向Google发送数据包,必须通过?关192.168.1.1转发,也就是说,接收?的MAC地址将是?关的MAC地址。
3.4应?层协议
浏览???的是HTTP协议,它的整个数据包构造是这样的:
HTTP部分的内容,类似于下?这样:
我们假定这个部分的?度为4960字节,它会被嵌在TCP数据包之中。
3.5TCP协议
TCP数据包需要设置端?,接收?(Google)的HTTP端?默认是80,发送?(本机)的端?是?个随机?成的1024-65535之间的整数,假定为51775。
TCP数据包的标头?度为20字节,加上嵌?HTTP的数据包,总?度变为4980字节。
3.6IP协议
然后,TCP数据包再嵌?IP数据包。IP数据包需要设置双?的IP地址,这是已知的,发送?是192.168.1.100(本机),接收?是172.194.72.105(Google)。
IP数据包的标头?度为20字节,加上嵌?的TCP数据包,总?度变为5000字节。
3.7以太?协议
最后,IP数据包嵌?以太?数据包。以太?数据包需要设置双?的MAC地址,发送?为本机的?卡MAC地址,接收?为?关192.168.1.1的MAC地址(通过ARP协议得到)。
以太?数据包的数据部分,最??度为1500字节,?现在的IP数据包?度为5000字节。因此,IP数据包必须分割成四个包。因为每个包都有??的IP标头(20字节),所以四个包的IP数据包的?度分别为1500、1500、1500、560。
3.8服务器端响应
经过多个?关的转发,Google的服务器172.194.72.105,收到了这四个以太?数据包。
根据IP标头的序号,Google将四个包拼起来,取出完整的TCP数据包,然后读出??的"HTTP请求",接着做出"HTTP响应",再?TCP协议发回来。
本机收到HTTP响应以后,就可以将??显示出来,完成?次?络通信。
这个例?就到此为?,虽然经过了简化,但它?致上反映了互联?协议的整个通信过程。
内容总结
以上是互联网集市为您收集整理的程序员内功修炼 计算机网络 互联⽹协议⼊⻔(下)全部内容,希望文章能够帮你解决程序员内功修炼 计算机网络 互联⽹协议⼊⻔(下)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。