数据链路层:考虑相邻两个节点之间的传输(通过网线/光纤/无线直接相连的两个设备)
这里以数据链路层其中最知名的就是“以太网”
以太网帧格式:
以太网数据帧=帧头+载荷+帧尾
帧头:目的地址、源地址、类型
目的地址和源地址:此处不是使用IP地址表示了,而是搞了一个mac地址
mac地址是物理地址(和IP地址完全独立的,另外一套地址体系)有6字节大小(相比IPv4地址大很多)当前每个设备都会有唯一的mac地址,此处mac地址不是动态分配的,而是网卡出厂的时候就被设置好的
6字节就2^48 = 2^16 * 2^32=6w * 42亿
载荷:完整的IP数据报
试问:都已经有了IP地址为啥还要mac地址
假设只有一套地址体系也就够了,但是,在最初大佬们研发初代的协议栈的时候,研发网络层协议的大佬和研发数据链路层协议的大佬都各自独立研发,导致现在此处使用了两种地址相互配合
那使用上IP地址和mac地址针对什么??如何相互配合??
IP用来描述整个传输过程的起点终点,mac则是用来描述两个相邻节点,起点终点...
IP描述的是 : 开始位置 与 结束位置 规划最好的路线
mac描述的是 :当前阶段的 任务 相邻节点的位置
MTU对TCP协议的影响:TCP的一个数据报也不能无限大,还是受制于MTU,TCP的单个数据报的最大消息长度称为:MSS
TCP在建立连接的过程中,通信双方会进行MSS协商,最理想的情况下,MSS的值正好是在IP不会被分片处理的最大长度(这个长度仍然是受制于数据链路层的MTU);双方在发送SYN的时候会在TCP头部写入自己支持的MSS值;然后双方得知对方的MSS值之后,选择较小的作为最终MSS;MSS的值就是在TCP首部的40字节变长选项中
MTU是一个数据链路层的数据帧,能够承载数据的最大长度(载荷长度)
载荷具体多长和使用的物理介质有很大关系,当然也和数据链路层使用的协议有很大关系,像以太网协议,MTU中1500字节
MTU引起了IP这个协议来进行分包组包,IP的分包组包通常不是根据这个IP最大长度64k来分的,一般情况下,数据链路层的MTU都比64kb要小
DNS:
DNS:是应用层的一个协议 :域名解析系统
网络上的服务器要访问它,需要的是IP地址,因为IP地址太长太杂,后来使用一些简单的单词构成字符串来表示这个地址,每个域名都对应了一个/N个IP地址,既然如此就需要能够把域名和IP地址给对应上
最原始的做法,是使用一个hosts这个文件(现在电脑上还有这个文件,仍然好使),类似于哈希表一样,建立了IP和域名的映射关系
如果需要访问某个域名的时候,就自动请求一下DNS服务器,DNS服务器就帮你进行查询,把得到的结果返回给你(此处结果就是具体的IP地址)
如果你电脑的DNS,服务器配置的不对,或者DNS服务器挂了,此时你就会出现一个典型现象:APP可以动,但是网页不能用
一般我们自用的电脑都是自动获得DNS服务器地址(如何查看)
当前要求网站的域名不能重复,(保证唯一)全世界这么多网站,那就需要设定好明文规定针对域名进行分级
以 pic.sogou.com 为例:
分为一级域名、二级域名、三级域名
.com 是一级域名 .com 就是“公司”缩写;一级域名不是只有一个,还有其他的种类,org,cn,us等
.sougou 是二级域名 ,表示搜狗这个公司
.pic 是三级域名
域名不重复概念边界???
随着域名的分级,DNS服务器也分了级别,有一级域名的DNS服务器,还有二级域名,三级域名;每级域名都可以重复,但是不能同时让每级域名都重复,有一级域名不重复即可;
查询DNS服务器也是分级来查询的,DNS服务器也是分成一级域名服务器,二级域名服务器
针对域名来说不是只有三级,还可以不断向下分级,一般来说我们常见到的就是三级域名或者四级域名;
扩展:如果想要注册一个网站,申请一个域名,把你的域名和服务器的IP地址关联起来, 把你的数据写到DNS服务器里