初识网络协议:如何上网

大多数人只知道拉一根网线,往有网卡的电脑上一插,什么也不需要做,就可以上网了。

其实在你看不见的地方,有很多事情发生了。

首先,ipconfig后你会发现,你被分配了一个IP地址,IP地址上面是网卡的MAC地址,系统还给你配置好了子网掩码默认网关

MAC地址是一个网卡的物理地址,用十六进制,6个byte表示。网卡自打生产出来,就带有号称全局唯一的MAC地址。不过MAC地址是一个局域网才有效的地址,所以只要局域网唯一就好了。

默认网关(Gateway),默认网关的地址一定和源IP地址是同一个网段,往往不是第一个就是第二个,如192.168.1.1。

有了IP地址和MAC地址,配置好了网关,我们就能上网了。这里以机器A访问机器B为例。

机器A当然知道自己的相关信息,要访问机器B肯定也知道机器B的IP地址,但是不知道B的MAC地址。

那么如何获取B的MAC地址呢?这里用到了ARP协议,也就是已知IP地址,求MAC地址的协议。

源IP地址:IP-A

源MAC地址:MAC-A

目标IP地址:IP-B

目标MAC地址:首先通过IP地址和子网掩码看是否在同一个局域网下,在同一个局域网下,就没网关什么事儿了,直接将源地址和目标地址放入IP头,然后通过ARP获取目标MAC地址,将源MAC地址和目标MAC地址放入MAC头中,发出去就可以了。

不在同一个局域网下,将源地址和网关IP地址放入IP头,通过ARP获取默认网关MAC地址,将源MAC地址和网关MAC地址放入MAC头,再发送出去。网关收到网络包后会转发给对应的设备,在这里,网关分两种,一种是不改变IP地址的,我们称之为转发网关,另一种是改变IP地址的,我们称之为NAT网关。为什么要改变IP地址呢?这也很好理解,内网访问外网的时候,都会被路由器NAT成运营商的地址,例如上一章ipconfig和浏览器查看IP。

很多情况下,人们把网关就叫作路由器。其实不完全准确,而另一种比喻更加恰当:路由器是一台设备,它有五个网口或者网卡,相当于有五只手,分别连着五个局域网。每只手的IP地址都和局域网的IP地址有着相同的网段,每只手都是它握住的那个局域网的网关。任何一个想发往其他局域网的包,都会到达其中一只手,被拿进来,拿下MAC头和IP头,看看,根据自己的路由算法,选择另一只手,加上IP头和MAC头,然后扔出去。

MAC头和IP头的细节:

那么最后,我还有一个问题。为什么我插了网线,什么都没有做,就被分配了一个IP地址呢?

这是因为动态主机配置协议(Dynamic Host Configuration Protocol),简称DHCP。

有了这个协议,当一台新的机器加入一个网络的时候,新来的机器会使用IP地址0.0.0.0向广播IP地址255.255.255.255发送一个广播包,广播包是封装在UDP里面的,里面有新来的电脑的MAC地址。网络如果配置了DHCP Server(可以有多个),就立刻能知道来了一个新机器,就会根据MAC地址分配给它一个IP地址,我们称之为DHCP Offer。除此之外,服务器还会发送子网掩码、网关和IP地址租用期等信息。

新来的机器会选择接收最先到达的DHCP Offer,并发送一个DHCP Request广播数据包,包中包含机器的MAC地址、租约分配的IP地址、提供租约的DHCP服务器地址等。此时还是用0.0.0.0的IP地址进行广播,因为还没有得到DHCP Server的最后确认。当DHCP Server接收到DHCP Request后,会广播返回给新机器一个DHCP ACK消息包,里面有这一IP地址的合法租用信息额其他配置信息,表示已经接受了新机器的选择。当其他DHCP Server接受到DHCP Request后,发现没有接受自己给的IP地址,则会撤销提供的IP地址,以便提供给下一个新来的机器使用。

当IP地址租用期过去50%时,客户机会向为其提供IP地址的DHCP Server发送DHCP Request消息包。客户机接收到该服务器回应的DHCP ACK消息包,会根据消息包更新配置。这样,IP租用更新就完成了。

参考资料:《趣谈网络协议》

原文地址:https://www.cnblogs.com/74percent/p/12364704.html

时间: 2024-08-02 14:43:49

初识网络协议:如何上网的相关文章

初识网络协议:HTTP和HTTPS

HTTP和HTTPS都是应用层的协议,也是我们经常看得到的.它们两个的区别,体现在下图. HTTP协议传输的数据都是未加密的,都是明文.所以不安全,信息容易被窃取. HTTPS协议传输的数据是经过加密的,是安全的,所以有个“锁”. HTTP协议: HTTP是基于TCP协议的,在发送HTTP请求之前会先建立起TCP连接.建立TCP连接需要三次握手,断开需要四次挥手,开销还是比较大的,所以得让建立起来的TCP连接能够被复用.目前使用的HTTP协议大部分都是1.1,在1.1的协议里,默认是开启了Kee

初识网络协议:什么是容器

容器(Container)的思想是要变成软件交付的集装箱.而集装箱最重要的就是“打包”和“标准”两大特点.所谓打包,就是将所有的货物打包在一起,然后放到集装箱里面:所谓标准,就是集装箱的尺寸全部都是一样的. 对于容器而言,打包就是将货物封装起来,使货物之间互不干扰,相互隔离.隔离主要使用了两种技术,namespace和cgroup. 命名空间(namespace) 命名空间是用来解决在不同的空间里面,类名相同引起的冲突.这在很多编程语言里面都很常见,比如PHP. 在Linux下也是这样的,很多的

TCP/IP网络协议初识

目录 一.什么是协议? 二.什么是TCP/IP协议? 三.TCP/IP为什么这么多协议? 四.TCP/IP协议为什么分层? 五.TCP/IP协议如何入门? 六.TCP/IP 的分层: 七.各协议层打包和拆包过程: 八.浏览器访问网页的整个流程: 九.举例:网上购物的请求流程 一.什么是协议? 协议就是两个或多个对象之间为了某个或多个需求而设置的约定,即在什么时间,遇到什么情况该做什么. 举例: 小强和小明约定周末一起去玩小霸王游戏机,但是如果遇上停电就去掏鸟窝. 二.什么是TCP/IP协议? T

初识网络编程

初识网络编程 一.楔子 你现在已经学会了写python代码,假如你写了两个python文件a.py和b.py,分别去运行,你就会发现,这两个python的文件分别运行的很好.但是如果这两个程序之间想要传递一个数据,你要怎么做呢? 这个问题以你现在的知识就可以解决了,我们可以创建一个文件,把a.py想要传递的内容写到文件中,然后b.py从这个文件中读取内容就可以了. 但是当你的a.py和b.py分别在不同电脑上的时候,你要怎么办呢? 类似的机制有计算机网盘,qq等等.我们可以在我们的电脑上和别人聊

TCP/IP网络协议

什么是协议?协议就是双方约定的规则.同理,在网络中,计算机之间的相互通信需要共同遵守一定的规则,这些规则就称为网络协议. 下面是我百度的定义: TCP/IP是“transmission Control Protocol/Internet Protocol”的简写,中文译名为传输控制协议/互联网络协议)协议, TCP/IP(传输控制协议/网间协议)是一种网络通信协议,它规范了网络上的所有通信设备,尤其是一个主机与另一个主机之间的数据往来格式以及传送方式.TCP/IP是INTERNET的基础协议,也

怎么管理带宽?如果通过网络协议优化流量?

"以人为本"的管理方式很好,但是对于上网来说,人的上网随性很多,打开视频,浏览不相关的网页其实就是秒秒钟或者一个瞬间,一个念头就可以操作起来的行为,那么根据网络协议来优化局域网流量的使用应该更有巧妙之处. 新增一个全新的带宽优化策略 2.选择应用对象(可以对整个局域网,也可以对您需要的部门)内容策略根据协议分类 ,网页分流,具体协议,具体网页来设置.这样设置后, 那么整个局域网内流动的无数网络协议,流量会优先给收发邮件用.(这对很多业务部门还是很重要的) 4.设置好的策略,按照排序,可

Android之Http通信——1.初识Http协议

Android之Http通信--1.初识Http协议 引言: 今天是六一儿童节,先在这里给各位超龄儿童说声节日快乐哈~( ╯□╰ ),小猪也象征性地给群里的小朋友们派了红包-嗯,忙碌的五月最终过去了,做毕设,写论文,拍毕业照,答辩,辞职.各种各样的事,也算忙完了,好吧.小猪如今又在一家新的公司上班了.第三间公司了.你们肯定会认为小猪三心二意是吧,毕竟才差点儿相同毕业就换了那么多家公司,然后可能问我."小猪你什么时候跳第四间公司",哈哈,应该不会了哈,怎么说呢,事实上我还是非常专一的,毕

网络协议基础

1. 什么是互联网协议及为何要有互联网协议 互联网的本质就是一系列网络协议,互联网协议就是让孤立的计算机能够互相沟通联系.英语成为世界上所有人通信的统一标准,如果把计算机看成分布于世界各地的人,那么连接两台计算机之间的internet实际上就是一系列统一的标准,这些标准称之为互联网协议,互联网的本质就是一系列的协议,总称为'互联网协议'(Internet Protocol Suite).能让孤立的计算机之间互相联系,方便信息的交流和传输,所以要有互联网协议. 2.OSI五层模型 互联网的实现,分

Python学习day3--网络基础之网络协议篇

一.互联网协议 连接两台计算机之间的Internet实际上就是一系列统一的标准,这些标准称之为互联网协议,互联网的本质就是一系列网络协议. 二 .为什么要有互联网协议 互联网协议就相当于计算机界的英语.它的功能:定义计算机如何接入internet,以及接入internet的计算机通信的标准. 三.tcp/ip五层模型 互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层,这里仅讨论五层模型. 用户感知的是最上面的应用层,越往下越靠近硬件,每一层都有自己运行的特定协议. 物理层