网络基础——数据链路层
数据链路层:(解决具体从哪到哪的实现,即下一跳问题)
用于两个设备(同⼀一种数据链路节点)之间进行传递.
以太网帧格式:
认识MAC地址:
MAC地址⽤用来识别数据链路层中相连的节点; ⻓长度为48位, 及6个字节. ⼀般⽤用16进制数字加上冒号的形式来表⽰示(例如: 08:00:27:03:fb:19) 在网卡出厂时就确定了, 不能修改. mac地址通常是唯⼀的(虚拟机中的mac地址不是真实的mac地 址, 可能会冲突; 也有些网卡⽀支持⽤用户配置mac地址)。
IP地址描述的是路途总体的 起点 和 终点;
MAC地址描述的是路途上的每⼀一个区间的起点和终点;
MTU与IP地址:
将较⼤大的IP包分成多个⼩小包, 并给每个⼩小包打上标签;
每个⼩小包IP协议头的 16位标识(id) 都是相同的;
每个⼩小包的IP协议头的3位标志字段中, 第2位置为0, 表⽰示允许分⽚片, 第3位来表⽰示结束标记(当前是是最后一个小包, 是的话置为1, 否则置为0);
到达对端时再将这些⼩小包, 会按顺序重组, 拼装到⼀一起返回给传输层;
一旦这些⼩小包中任意一个⼩小包丢失, 接收端的重组就会失败. 但是IP层不会负责重新传输数据;
MTU与UDP协议:
一旦UDP携带的数据超过1472(1500 - 20(IP⾸首部) - 8(UDP⾸首部)), 那么就会在网络层分成多个IP数 据报. 这多个IP数据报有任意⼀个丢失, 都会引起接收端网络层重组失败. 那么这就意味着, 如果UDP数据 报在网络层被分⽚片, 整个数据被丢失的概率就大大增加了.
MTU与TCP协议:
TCP的⼀个数据报也不能无限⼤, 还是受制于MTU. TCP的单个数据报的最⼤消息⻓度, 称为 MSS(Max Segment Size);
TCP在建立连接的过程中, 通信双方会进行MSS协商. 最理想的情况下, MSS的值正好是在IP不会被分⽚处理的最大长度(这个⻓度仍然是受制于数据链路层的MTU). 双⽅在发送SYN的时候会在TCP头部写入⾃己能⽀持的MSS值. 然后双方得知对方的MSS值之后, 选择较小的作为最终MSS. MSS的值就是在TCP⾸首部的40字节变⻓选项中(kind=2);
ARP协议:建立了主机 IP地址 和 MAC地址 的映射关系.
格式:
源主机发出ARP请求,询问“IP地址是192.168.0.1的主机的硬件地址是多少”, 并将这个请求⼲广播到本地网段(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播);
目的主机接收到广播的ARP请求,发现其中的IP地址与本机相符,则发送一个ARP应答数据包给源主机,将⾃自⼰己的硬件地址填写在应答包中;
每台主机都维护一个ARP缓存表,可以⽤用arp -a命令查看。缓存表中的表项有过期时间(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬 件地址;
DNS域名解析协议:一整套从域名映射到IP的系统
TCP/IP中使用IP地址和端口号来确定网络上的一台主机的一个程序. 但是IP地址不方便记忆. 于是人们发明了一种叫主机名的东西, 是一个字符串, 并且使用hosts文件来描述主机名和IP地址的关系.
域名的使用:
com: 一级域名. 表示这是一个企业域名. 同级的还有 "net"(网络提供商), "org"(非盈利组织) 等.
baidu: 二级域名, 公司名;
www: 只是一种习惯用法.。