Linux网络编程(数据链路层)

Posted AllenSquirrel

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux网络编程(数据链路层)相关的知识,希望对你有一定的参考价值。

数据链路层:负责相邻设备之间数据传输

以太网协议:

如何获取相邻指定设备的mac地址:ARP协议

ARP协议:

介于网络层和链路层之间的协议  通过IP地址获取MAC地址

在局域网广播ARP请求(smac+sip+dmac +dip)以太网中对端mac地址全为1

相邻设备收到ARP请求后,检测目的ip地址与自己是否相同,如果不相同则直接丢弃,如果相同则组织ARP应答,将自己mac地址填充进行回复  两端都会将mac-ip的映射关系保存一段时间后丢弃,防止DHCP动态分配ip导致ip改变影响其他设备正常通信

MTU:(最大传输单元)

以太网默认1500字节

TCP在传输层会自动进行数据分段,不会在网络层进行数据分片

原因:三次握手阶段协商mss,每次从缓冲区取出不大于mss数据封装报头进行传输

UDP不会协商mss,只要数据段大小小于64k-28就可以传输,若大于mtu大小,则在网络层进行数据分片,分片后在对端进行重组,此过程中一旦一个分片出现问题,整个报文都会被丢弃,所以udp不保证可靠传输,也就是说,分片越多,出错概率越大

udp传输需要在应用层上进行操作,要在上层进行分包时计算出mss大小以其作为依据进行分包,尽量减少分片概率

DNS:

域名:服务器别名,访问服务器通过解析得到服务器的ip地址进行访问  

服务器划分:

域名划分:

顶级域名 .com/.gov/.edu/.org ./cn/.en

二级域名baidu.com   qq.com

三级域名zhidao.baidu.com   music.qq.com

域名解析流程:

  1. 查看缓存信息
  2. 查看本地hosts文件
  3. 请求本地域名服务器
  4. 请求根域名服务器,找不到则向下迭代查找

浏览器输入url,回车按下后发生了什么?

  1. 域名解析
  2. 搭建tcp客户端
  3. 组织http协议格式的请求
  4. 发送请求,服务器收到请求进行解析,业务处理,组织http协议格式的响应
  5. 等待回复,客户端收到响应,解析http响应
  6. 根据content-type解析处理正文,实现页面渲染

ICMP协议:消息控制网络层的协议  通常用于网络探测  eg.ping

telnet使用23号端口  ssh使用22号端口   ping不使用端口

NAT/NAPT:网络地址转换技术

用于组建私网,私网中的主机对外通信时,部署于网关设备上的NAT服务进行源端地址替换(建立映射关系),转换为对外地址后进行数据转发

私网中的主机使用同一个对外公网地址上网,节省公网地址的使用

NAT和VPN区别:

NAT是一个服务,部署在网关设备,工作在网络层进行地址转换

VPN代理是一个应用,可以部署在任意设备上,工作在应用层

以上是关于Linux网络编程(数据链路层)的主要内容,如果未能解决你的问题,请参考以下文章

[Linux] Linux网络之数据链路层详解

[Linux] Linux网络之数据链路层详解

Linux网络编程(数据链路层)

Linux网络基础--网络层与数据链路层

Linux网络基础--网络层与数据链路层

Linux网络基础--网络层与数据链路层