zoukankan      html  css  js  c++  java
  • 计算机网络 part2

    一、UDP协议

    1、概述

    UDP提供不可靠的服务,无连接(不存在建立连接的时延),首部开销相对TCP小,没有拥塞控制,提供最大努力交付,面向报文(无论多长的报文UDP也只加一个头部就往下发;TCP面向字节流)。通常用于允许一些数据丢失,但不允许交较大时延、传输少量数据(DNS)。

    2、UDP首部格式(8字节)

    • 源端口号:16位。
    • 目标端口号:16位。
    • UDP长度:16位。包括UDP首部和数据的总长度。最少为8。
    • 校验和: 16位。
      1、临时添加12字节UDP伪首部,设置校验和为0。
      2、按16位(不足末尾补0)为单位数字将UDP伪首部、UDP首部、UDP数据以2进制反码相加求和。
      3、将16位的和放入校验和。
      4、校验:加UDP伪首部,按16位为单位计算2进制反码的和,结果为0则正确。

    二、IP协议、

    references:
    OSI参考模型——网络层:IPv4协议和IPv6协议详解

    IP协议

    1、特点

    • 无连接的、不可靠的分组传送协议;
    • 尽最大努力交付;
    • 是点对点的网络层通信协议;

    2、IP首部格式(20~60字节)

    1. 版本:4位,4是IPv4,6是IPv6;
    2. 首部长度:8位。
    3. 总长度:16位。总长度=首部长度+数据长度,最大(2^{16}-1=65535)字节。
    4. 标识(Identification):16位,用于分片重组。属于同一个分片的ID相同。
    5. 标志(Flags):3位,用于分片重组。第一位未使用,必须为0;第二位DF不分片标志,表示能否分片,1不能分片,0能分片。若DF为1且IP分片的长度大于MTU,则放弃该分片并发送ICMP差错报文向源主机报告;第三位MF更多分片标志,表示该分片是不是最后一个分片(后面还有没有分片),1表示不是,0表示是最后一个分片。
    6. 片偏移:13位,表示分片在原始数据中的位置。单位为8字节,如片偏移10,则偏移量为80字节。最多表示偏移(2^{13}*8=65536)字节。
    7. 生存时间(TLL):8位,表示包可以经过多少个路由器的中转,每经过一个路由器,TLL减1。当TTL为0时,丢弃IP数据包并发送ICMP报文通知源主机。TLL可以防止数据包环路。
    8. 协议:8位,表示使用IP的高层协议类型(IP首部的下一个首部),1是ICMP,2是IGMP,6是TCP,17是UDP。
    9. 首部校验和:16位,校验IP的首部。
    10. 地址:32位。
    11. 目标地址:32位。

    3、分片和重组

    相关字段:标识、标志、片偏移。
    1、最大传输单元(MTU)指定了网络中可传输数据包的最大尺寸,当分组的长度超过MTU,并且DF为0就要分片(DF为1且IP分片的长度大于MTU,则放弃该分片并发送ICMP差错报文向源主机报告)。每个片段的最大尺寸是MTU-IP头部长度,然后进行以下改动:总长度为当前片段大小;MF除了最后一个其他都为1;片偏移在原来片偏移基础上;首部校验和重新计算。
    2、通过片偏移找到重组的顺序,MF为0表示所有分片已到达。

    4、路径MTU发现

    主机先发送整个数据包,并且将DF设为1。这样遇到长度大于传输单元时就会丢弃并返回ICMP报文。然后将ICMP通知中的MTU设为当前的MTU,然后根据这个MTU进行分片。然后再传输。如此往复,直到没有ICMP报文返回,则说明现在的MTU已经是真的MTU了。

    三、ICMP

    1、概述

    ICMP协议是网络层协议。因为IP协议提供的是不可靠的服务,所以丢包后不能回复是否丢包和丢包的原因,所以通过ICMP完成。分为查询报文和差错报文。
    IP数据报协议字段为1就说明协议是ICMP。

    2、报文格式

    1. 类型:8位。表示报文类型。1~127是差错报文,128以上是查询报文。
    2. 代码:8位。标识对应的代码,和类型字段一起标识ICMP报文的详细类型。
    3. 校验和:16位。

    3、常见报文

    1. 回显请求(类型8)、回显应答(类型0):一台主机向另一个主机发送ICMP回显请求报文,如果途中没有异常(丢失,传输失败)就返回ICMP回显应答报文,说明这台主机存在。Ping命令使用的就是ICMP回显请求和应答报文。
    2. 目标不可达(类型3):网络不可达(代码0),主机不可达(代码1),协议不可达(代码2)。
    3. 超时报文(类型11):传输超时(代码0),分段重组超时(代码1)。
  • 相关阅读:
    独一份秘籍 | 开发数字孪生3D可视化炫酷场景?还有MAC电脑大奖可拿!
    数字孪生城市,如何破旧立新?ThingJS
    官方示例(十六):3D场景中BIM剖切面参数化开发ThingJS
    官方案例(十五):3D开发构造器参数测量多边形面积 ThingJS
    如何在Spring Boot 中使用 HandlerMethodArgumentResolver
    python的基本数据类型
    canvas 隐藏 踩坑
    小程序canvas 圆角框带填充颜色
    小程序 canvas 文字加粗
    flex布局 一行4个元素 后面不够4个元素对齐
  • 原文地址:https://www.cnblogs.com/KirinSB/p/12663001.html
Copyright © 2011-2022 走看看