linux12.

网络基础2:
UDP:用户数据报(无连接 不可靠 面向数据报)
无 不 :只要知道对端数据就可以发送数据 并且不关心是否丢失
面向数据报:
协议实现:
16位源端口 实现端与端之间的传输
16位校验和:检验数据一致性
16位数据报长度:
1.所能传输的数据大小不能超过64k-8
若传输的数据大小过大需要在应用层进行分包操作 并且因为udp并不保证数据有序到达 因此 需要在应用层进行包序管理
2.因为在协议头中定义数据长度 因此向上层交付的数据是整条交付
udp缓冲区:
发送缓冲区:作用并没有太大体现 因为每次sendto发送的数据都是直接封装头部进行发送
接受缓冲区:用于缓冲接收到的数据
应用层实现的协议:DNS /DHCP
UDP在协议栈层面实现了局域网广播
UDP应用场景:报头小 并且没有可靠传输机制 因此传输性能较高 适用于实时性要求高的场景

面向字节流:发送的数据放到发送缓冲区中 内核选择合适的时机来发送数据 并且每次从缓冲区中取出发送的数据的最大大小取决于双方三次握手阶段协商的
MSS大小
发送的多条数据在缓冲区中会有可能当作一条数据来进行发送了接收方 接收的数据放在接收缓冲区中

网络层:负责地址管理与路由选择
功能:位一条数据在复杂的网络中选择一条合适的路径
IP协议的实现:四位版本号:IPv4 IPv6
4位首部长度:
8位服务类型:4位TOS字段
16位数据报长度:UDP数据报中的最大数据长度 64k-20-8
若UDP长度小于64k-28但是大于MTU大小 需要在网络层进行数据分片
16位分片标识:标识当前分片属于哪个udp数据报
3位标志:一位是否禁止分片 一位分片结束标记
13位片偏移:标识当前分片在完整udp数据报中的位置 以8个字节为单位
8位报文生命周期:TTL当前数据所能经过的路由器跳数
8位上层协议:数据分用
16位校验和:
32位IP地址:标识数据从哪里来到哪里去

IP地址的组成:
1.网络号:每一个路由器向自己子网中的主机分配地址的时候 这些地址中都应该包含这个网络的标记 这个标记用于区分每一个网络 每一个网络的网络号只要
不一样 则分配到IP地址则不会冲突
2.每一个主机的IP地址不但要具备网络的标识(网络号),还需要能够在局域网中唯一标识 这个唯一标识称之为主机号

网段的划分
新的网段划分方式 CIDR方案 对网络的划分借助了一个字段叫子网掩码
子网掩码:uint 32_t 类型的数据 数据由连续的二进制1组成
作用:
1.子网掩码取反可以得到局域网中的主机号范围
2.子网掩码与IP地址相与可以得到网络号

路由选择:每个路由器上都有一个路由表 记录当前路由器所相连的网络
网络号 子网掩码 网卡名称1

当路由器接收到一个数据 则取出目的IP地址 通过路由表判断当前数据的目的主机数据哪一个相连的网络
若属于某个相连的网络 则使用对应网卡 将数据发送出去
若路由表匹配失败 则将数据发送到下一层网络设备上

特殊IP地址 :
主机号全为0 网络号
主机号全为1 UDP的广播地址
127.0.0.1:lo 本机虚拟回环网卡地址 用于本机网络测试
0.0.0.0:本机任意地址
255.255.255.255

并不是所有的网络号都能用于组建局域网-RFC91918中规定只有以下几种网络号能用于组建私网
10...* A类 172.16.. B类 192.168.. C类
组建局域网时相邻的网络不能使用相同的网络号 会造成地址分配冲突

数据链路层: 负责相邻设备之间的数据帧传输 以太网协议
mac地址:相邻设备定位的地址 物理网卡硬件地址
Ethernet 协议实现:源mac地址 目的mac地址(六个字节的无符号整数 uint8_t mac[6] 网卡出厂时设定 早期不能更改) 上层协议类型 数据 数据帧的结尾(包含校验和)
如何获取相邻设备的mac地址:
arp协议 :介于网络层与链路层之间的协议

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值