<计算机网络>笔记1: TCP/IP五层协议

2024-09-02 10:20

本文主要是介绍<计算机网络>笔记1: TCP/IP五层协议,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

<计算机网络>笔记1: TCP/IP五层协议

文章目录

  • <计算机网络>笔记1: TCP/IP五层协议
  • ref
  • 1. 概述
    • 名词
    • 因特网组成
    • 性能指标
    • TCP/IP模型: 实际普及全球的协议
  • 2. 物理层
  • 3. 数据链路层
    • 点对点信道
      • 3.1. 基本问题
      • 3.3.2 点对点协议PPP Point-to-Point Protocol
      • 3.3.3. 使用广播信道的链路层
    • 3.4. 使用广播信道的以太网: 一对多, 复杂, 专用共享信道协议
      • 3.4.1. 集线器的星型拓扑
      • 3.4.2. 以太网信道利用率
      • 3.4.3. 以太网mac层
    • 3.5. 扩展以太网
      • 3.5.1. 网桥
      • 3.5.2. 透明网桥
      • 3.5.3. 源路由网桥:
      • 3.5.4. 多接口网桥
    • 3.4. 高速以太网
    • 3.5. 宽带
  • 4. 网络层
    • 4.1. 网际协议IP
      • 4.1.1. 虚拟互联网络
      • 4.1.2. 分类的IP地址
      • 4.1.3. ip地址&硬件地址
      • 4.1.4. 地址解析协议ARP
      • 4.1.5. IP数据报
      • 4.1.6. IP转发分组
    • 4.2. 划分子网&构造超网
      • 4.2.1. 划分子网
      • 4.2.2. 无分类编址CIDR(超网
    • 4.3. 网际控制报文协议ICMP
      • 4.3.1. ICMP分类
      • 4.3.2. ICMP应用
    • 4.4. 路由选择协议
      • 4.4.1.基本概念
      • 4.4.2. 内部网关协议RIP
      • 4.4.3 内部网关协议OSPF
      • 4.4.4. 外部网关协议BGP
      • 4.4.5. 路由器构成
    • 4.5. IP多播
      • 4.5.1. 局域网硬件多播
      • 4.5.2. 网际组管理IGMP&多播路由选择协议
    • 4.6. 虚拟专用网VPN & 网络地址转换NAT
      • 4.6.1. 虚拟专用网VPN
      • 4.6.2. 网络地址转换NAT
  • 5. 传输层
      • 5.1.1. 传输层
      • 5.1.2. 端口
    • 5.2. 用户数据报协议UDP
    • 5.3. 传输控制协议TCP
      • 5.3.1. TCP连接
      • 5.3.2. 可靠传输工作原理
      • 5.3.3. TCP报文首部
    • 5.4. TCP可靠传输
      • 5.4.1. 字节为单位的滑动窗口
      • 5.4.2. 超时重传时间选择
    • 5.5. 流量控制
    • 5.6. TCP拥塞控制
    • 5.7.TCP运输连接管理
      • 5.7.1. TCP连接建立: 三次握手
      • 5.7.2. TCP连接释放: 四次挥手
      • TCP有限状态机
  • 6. 应用层
    • 6.1. DNS域名系统
    • 6.2. 文件传送协议
      • 6.2.1. FTP文件传送协议 File Transfer Protocol
      • 6.2.3. 简单文件传送协议TFTP Trivial File Transfer Protocol
    • 6.3. 远程终端协议TELNET
    • 6.4. 万维网WWW
      • 6.4.1. 统一资源定位符URL
      • 6.4.2. 超文本传输协议HTTP
    • 6.5. 电子邮件
    • 6.6. 动态主机配置协议DHCP
    • 6.7. 简单网络管理协议SNMP
    • 6.8. 应用跨网络通信
  • ref

ref

  • 微信读书《计算机网络》谢希然

1. 概述

名词

  1. 因特网: 世界上最大的互联网络(用户数以亿计,设备数以百万计)
  2. ARPANET: 阿帕网, 1969年美国防部创建的第一个分组交换网
  3. 1983: TCP/IP协议成为ARPANET的标准协议, 所有用TCP/IP的计算机可以互联, 1983称为因特网诞生时间
  4. internet: 互联网, 通用名词, 泛指多个计算机网络连成网络
  5. Internet: 因特网, 专用名词, 全球最大,开放的, 众多网络互连成的特定计算机网络, 采用TCP/IP协议族作为通信规则, 前身是美国ARPANET
  6. 三级结构: 主干网, 地区网, 校园网(企业网)
  7. ISP: Internet Service Provider因特网服务提供商(电信联通移动), 可从因特网管理机构申请到IP, 拥有通信线路和路由器等联网设备外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
  8. IXP: Internet eXchange Point 因特网交换点, 允许两个网络直接相连交换分组, 不用通过第三个网络转发分组(上图)
  9. WWW: World Wide Web万维网, 20世纪90年代欧洲原子核阻止CERN开发
  10. 因特网协会Internet Society ISOC, 1992年因特网不再归美国政府管辖而成立, 对因特网进行全面管理和在世界范围内促进发展和使用
  11. IAB: 因特网体系结构委员会, ISOC下技术组织, 下设2工程部
    1. IETF Internet Engineering Task Force因特网工程部, 有许多工作组WG组成的论坛(具体工作组有IESG(因特网工程指导小组)管理). 划分若干领域, 每个领域集中研究某一特定短期中期问题(如针对协议开发和标准化)
    2. IRTF Internet Research Task Force因特网研究部, 由许多研究组RG组成的论坛(具体工作由IRSG因特网研究指导小组管理)
  12. 制定因特网正式标准经历四个阶段[RFC 2026]
    1. 因特网草案Internet Draft - 还不是RFC文档
    2. 建议标准Proposed Standard - 这个阶段开始成为RFC文档
    3. 草案标准Draft Standard
    4. 因特网标准Internet Standard

因特网组成

  1. 边缘部分: 所有连接在因特网上的主机组成, 用户直接使用(传音视频)信息处理
  2. 核心部分: 大量网络和链接网络的路由器组成, 为边缘部分提供服务(提供连通性,分组交换)
    在这里插入图片描述
  • 边缘端系统的通信方式

    1. 客户-服务器方式C/S: 最常用传统(邮件,查找),客户=服务请求方,服务器-服务提供方, 都要使用网络核心部分提供的服务
      1. 在这里插入图片描述
    2. 对等连接方式P2P: 主机通信不区分服务请求, 平等通信, 都可下载对方共享文档, 可支持大量对等用户(上百万)同时工作
      1. 在这里插入图片描述
  • 核心部分

    1. 路由器: 实现分组交换(存储转发技术)的关键构件, 转发收到的分组(网络核心部分最重要功能)
    2. 在这里插入图片描述
  • 网络分类

    • 按作用范围: 广域网WAN,城域网MAN,局域网LAN,个人区域网PAN
    • 按使用者: 公用网, 专用网,
    • 接入网AN(本地接入网)

性能指标

  • 速率: bps

  • 带宽: 原指信号具有频带宽度(包含不同频率成分站的频率范围), 计网中指通信线路传送数据的能力, 单位时间点到点的最高数据率, b/s

  • 吞吐量: 单位时间通过某网络数据量, 如100Mb/s以太网典型吞吐量70Mb/s

  • 时延: 数据从一端-另一端所需时间, 总时延 = 发送时延 + 传播时延 + 处理时延 + 排队时延 总时延=发送时延+传播时延+处理时延+排队时延 总时延=发送时延+传播时延+处理时延+排队时延

    • 发送时延: (传输时延)主机/路由器发送数据帧需要时间 发送时延 = 数据帧长度 传输速率 b / s 发送时延=\frac{数据帧长度}{传输速率b/s}{} 发送时延=传输速率b/s数据帧长度
    • 传播时延: 电磁波在信道中传播一定距离花费时间 传播时延 = 信道长度 m 传播速度 m / s 传播时延=\frac{信道长度m}{传播速度m/s} 传播时延=传播速度m/s信道长度m
    • 处理时延: 路由器接收分组时花时间, 如分析首部,提取数据,校验,路由
    • 排队时延: 分组网络传输时经过许多路由器, 取决于通信量
    • 时延带宽积: 传播时延x带宽, 又称以比特位单位的链路长度
    • 往返时间RTT: 发送方发送数据开始到接收方收到来自接收方的确认, 总经历的时间
    • 利用率: 信道利用率:某信道?%的时间利用过, 网络利用率:全网络信道利用率加权平均, 利用率高则时延大
  • 非性能指标: 费用, 质量, 标准化, 可靠性, 可扩展性, 维护性

  • OSI模型: 开放系统互连基本参考模型, 全面但复杂且不适用

TCP/IP模型: 实际普及全球的协议

  • 在这里插入图片描述
  • 应用层 applicetion layer: 通过应用进程间交互完成特定网络应用
    • 如HTTP, SMTP,FTP等协议
  • 传输层 transport layer: 为两个主机间进程的通信提供通用的数据传输服务, 可复用(多个应用层进程可同时使用下面传输层服务),分用(传输层将收到的信息分别交付上面应用进程)
    • TCP 传输控制协议 Transmission Control Protocol, 提供面向连接的,可靠的数据传输服务,单位是报文段
    • UDP 提供无连接的,尽最大努力的数据传输服务(不保证可靠), 单位是用户数据报
  • 网络层 (ip层) network layer: 为分组交换网不同主机提供通信服务, 发送时将传输层报文段分组(IP数据报)
  • 数据链路层 data link layer: 将网络层的IP数据报组装成帧, 在两个相邻节点链路传送帧, 包括数据&必要信息(同步,地址,差错控制等)
    • 控制信息: 使接收端知道一个帧从哪个bit开始到哪个bit结束; 可以检查差错, 纠正差错
  • 物理层 physical layer: 确定电压, 线束等
  • 在这里插入图片描述
  • PDU Protocol Data Unit 对等层次之间传送的数据单位
  • SDU Service Data Unit: 层与层之间交换的数据单位, 可以多个SDU合成一个PDU, 也可一个SDU划分几个PDU
  • 服务原语: 上层使用下层提供的服务必须通过与下层交换一些命令
  • TCP/IP协议族 在这里插入图片描述

2. 物理层

  • 考虑如何在连接各种计算机的传输媒体上传输数据比特流, 确定机械特性,电气特性,功能特性,过程特性

  • 奈奎斯特准则: 任何信道中, 码元传输速率有限, 超过上限将出现严重码间串扰问题, 接收端对码元判断不可能

  • 香农公式: C = W l o g 2 ( 1 + S / N ) ( b / s ) C=W log_2(1+S/N) (b/s) C=Wlog2(1+S/N)(b/s) 信道带宽/信道的信噪比越大, 信息极限传输速率越高

  • 复用: 复用器,分用器

    • 频分复用: 所有用户同时占不同带宽资源
    • 时分复用: 划分一段等长的时分复用帧, 每个用户周期性出现
    • 统计时分复用: 改进提高利用率
    • 波分复用: 光的频分复用, ->密集波分复用
    • 码分复用: 不同码型
  • 宽带:

    • 有线宽带
      • ADSL 非对称数字用户技术, 用数字技术对现有模拟电话用户线改造, 使能承载数字业务
    • 无线宽带

3. 数据链路层

在这里插入图片描述

  • 数据链路: 传送数据的物理线路 + 必要的通信协议控制数据传输(软件+硬件, 如网络适配器)

点对点信道

  • 链路层通信步骤在这里插入图片描述

3.1. 基本问题

- 封装成帧- ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/8aaad229876946aebe21cbaeeb01634a.png)- 帧定界符: 帧开始符SOH 0x01, 帧结束符EOT 0x04, 只有SOH没有EOT则丢弃
- 透明传输- 文本传输不会出现定界符, 但图像传输可能会错误, 所以发送端在控制字符前插转义字符, 接收端删除转义字符
- 差错检测: 数据划分为帧, 每帧+冗余码, 接收方逐帧差错检验.. 实现无比特差错, 但不是可靠传输, 可能还有丢失重复失序等- 误码率BER: 一段时间内传输错误占比特总数比率, 提高信噪比可以减小- 循环冗余校验CRC: 事先商定除数P, 发送端二进制模2运算得余数R, 接收端模2整帧得余数为0. 余数=0无差错则accept, ≠0有擦除哦则丢弃- 帧检验序列FCS, 为了检错而添加的冗余码

3.3.2 点对点协议PPP Point-to-Point Protocol

-  PPP协议应满足的需求1. 简单: 仅CRC无其纠错序号流控2. 封装成帧: 使用帧界定符3. 透明性: 解决数据中的界定符冲突(如转义)4. 多种网络协议: 同一条物理链路同时支持多种网络层协议(IP,IPX5. 多种类型链路: 在多种类型链路运行(串行,并行,同步,异步,低速,高速,电,光,交换,非交换, 如PPPoE6. 差错检测: 检测帧立即丢弃差错7. 检测连接状态: 自动检测链路是否正常工作状态8. 最大传送单元: 对每种类型点对点链路设置最大传送单元MTU, 过长丢弃返回差错9. 网络层地址协商: 确保通信双方知道对方ip10. 数据压缩协商:  提供方法协商使用压缩
- 组成: 三个部分1. 一个将IP数据报封装到串行链路的方法2. 一个用来建立,配置和测试数据链路连接的链路控制协议LCP3. 一套网络控制协议NCP
- PPP协议帧格式- 各字段意义- ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/02b8b9fe387c4721a8e8c13f84bb7a7e.png)- F: 界定符, 表示帧开始/结束- A,C, 可能保留无信息- 协议字段, 0x0021:信息字段为IP数据报,0xC021:LCP数据,0x8021:网络层控制数据- 字节填充,异步传输使用转义字符0x7D1. 信息字段每个0x7E -> 0x7D,0x5E2. 每个0x7D -> 0x7D,0x5D3. 出现ASCII控制字符(<0x20), 前面+0x7D并改, 如0x03 -> 0x7D,0x23- 零比特填充,同步传输时使用- 硬件检测,发送端有5个连续1立即填0,接收端还原
- PPP协议工作状态- ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/17e1f0c5d0724b049ba8137e4c4b21f7.png)

3.3.3. 使用广播信道的链路层

  • 总线防冲突
    • 规定1帧最短64byte(512b
    • 帧最小间隔9.6us
  • CSMA/CD协议, 不能全双工通信
    • 准备发送:检测信道
    • 检测信道: 直到空闲切96bit 时间(帧间最小间隔)发送
    • 便发送边监听
      • 成功回1
      • 失败则停止发送,发人为干扰信号, 指数退避算法, >16次失败停发上报
      • 发完一帧保留以便重传

3.4. 使用广播信道的以太网: 一对多, 复杂, 专用共享信道协议

3.4.1. 集线器的星型拓扑

  • 集线器
    1. 使用集线器以太网也是总线网, 使用CSMA/CD协议, 同时仅允许一个站发数据
    2. n个接口, RJ-45插头
    3. 工作于物理层, 仅转发, 无碰撞检测
    4. 芯片自适应串音回波抵消

3.4.2. 以太网信道利用率

  • 达30%就处于重载情况

3.4.3. 以太网mac层

  • MAC层硬件地址

    • 物理地址/MAC地址, 每台计算机中固化在适配器的ROM的地址
    • 6字节MAC地址
      • 高24位: OUI 组织唯一标识符, IEEE注册管理机构RA分配
      • EUI: 扩展的唯一标识符
      • 地址字段第一字节最低为I/G位 (Individual/Group) =0:单站地址, =1组地址(用于组播
      • 地址字段1字节最低第2位: G/L位 =0全球管理(保证不重复), =1本地管理
  • 适配器过滤功能: 检查MAC帧地址, 本站手下,否则丢弃

    • 单播, 收到帧MAC地址同本站硬件地址
    • 广播, 发给局域网所有站点
    • 多播(组播: 发给局域网部分站点
    • 混杂方式(悄悄接收, 窃听, 用于监控分析
  • MAC帧格式

    • 在这里插入图片描述
    1. 位同步 8byte(硬件插入
    2. 目的地址 6byte:
    3. 源地址 6byte:
    4. 长度/类型字段 2byte:
    5. 数据字段 46byte-1500byte (64-18=46, 长度<46byte会+填充字段
    6. 帧检验序列FCS 4byte
  • 鉴定为无效MAC帧: 简单丢弃不重传

    1. 帧长度非整数个字节
    2. 帧检验序列FCS测出错误
    3. MAC客户数据字段长不再46-1500之间

3.5. 扩展以太网

3.5.1. 网桥

- ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/472218ac056140279871176561218a1a.png)
  • 好处
    1. 过滤通信量, 增大吞吐量, 使各个以太网段成为隔离开的碰撞域, 不同网段通信不会相互干扰
    2. 扩大物理范围
    3. 提高可靠性
    4. 可互联不同物理层, 不同MAC子层, 不同速率,
    5. 可使用PPP协议, 构建点对点链路
  • 缺点
    1. 接受的帧存储和查找转发表, 执行CSMA/CD算法, 增加时延
    2. MAC子层无流量控制功能, 负荷重可能溢出丢帧
    3. 适合用户少(<几百),通信量不大的以太网, 否则传播过多引起广播风暴

3.5.2. 透明网桥

  • 基于标准: IEEE 802.1D, 以太网站点不知道帧经过几个网桥; 即插即用无需配置转发表即可工作(自学习)
  • 自学习,转发步骤
    1. 网桥收到一帧后先自学习, 查找转发表中与收到帧的源地址有无匹配项目, 无则新增有则更新
    2. 转发帧: 查找有无目的地址, 无则通过所有其他接口转发, 有则按表转发
  • 生成树苏纳法: 互联在一起的网桥彼此通信后, 能找出原网络拓扑的子集, 该子集中联通网络不存在回路, 任何两个站仅有一条路径

3.5.3. 源路由网桥:

  • 发送帧时将详细路由信息放在帧首
  • 发现帧: 源站以广播方式想目的站发送, 在整个扩展的以太网沿所有可能的路由传送, 记录经过的路由, 到达时沿各自路由返回源站, 源站选择最佳路由. 之后该源站发送帧首部必须携带确定路由信息
    • 帮助源站确定整个网络可通过帧最大长度
  • 和透明网桥区别
    • 源路由网桥对主机非透明, 主机必须知道网桥标识和连到哪个网段, 可以利用最佳路由, 平均分配通信
    • 透明网桥使用生成树, 不保证最佳, 无法均衡负载

3.5.4. 多接口网桥

  • 交换式集线器(二层交换机), 有十多个接口, 每个接口直接与单个主机/另外集线器相连, 工作于全双工, 每个主机无碰撞传输, 即插即用
  • 优点: N个用户, 共享以太网平均带宽 1/N, 交换机1; 容易扩充; 不同速率可组合; 可用存储转发/直通; 方便地实现虚拟局域网(VLAN)
    • VLAN: 局域网网段构成的与物理位置无关的逻辑组, 每个VLAN帧有明确的标识符, 指明属于哪个VLAN, 是局域网给用户提供的一种服务, 最大帧长1522=1500+18+4)
      • 在这里插入图片描述

3.4. 高速以太网

  • 100Mb/s

  • 100BASE-T: 快速以太网, 双绞线传送100Mb/s基带信号的星型拓扑以太网, IEEE 802.3的CSMA/CD协议
  • 吉比特以太网: 1Gb/s
    • 允许1Gb/s全双工,半双工工作
    • 使用IEEE 802.3协议规定帧格式
    • 半双工下用CSMA/CD协议(全双工不用
    • 兼容10BASE-T, 100BASE-T
  • 10吉比特

3.5. 宽带

  • PPPoE(PPP oer Ethernet) 结合链路层协议, 解决鉴别用户身份问题

4. 网络层

4.1. 网际协议IP

  • IP协议配套: 地址解析协议ARP, 网际控制报文协议ICMP, 网际组管理协议IGMP
    • 在这里插入图片描述

4.1.1. 虚拟互联网络

  • 网络互连需要的中间设备
    1. 转发器: 物理层
    2. 网桥/桥接器: 链路层
    3. 路由器: 网络层
    4. 网关: 网络层以上, 连接两个不兼容系统
  • IP层标准化协议, 使用各方看起来像用统一的网络, 互联网可以由多种异构网络组成

4.1.2. 分类的IP地址

  • IP地址 ::= {<网络号>,<主机号>}, 指明主机和接到的网络
    • 在这里插入图片描述
      近年已广泛使用无分类IP进行路由, ABC类地址已成为历史

ip指派范围

特殊ip

  • ip地址特点
    1. 每个ip两部分, 分等级, IP管理机构只分配网络号,主机号自行分配; 路由器仅由网络号转发分组,更快
    2. IP标志一个主机&一条链路, 接到两个网络由两个ip(多归属主机) 每个路由器至少2ip
    3. 用转发器/网桥连接的若干局域网是一个网络, 只有一个网络号
    4. 因特网同等对待每个ip
    5. 无编号网络: 路由器直接相连

4.1.3. ip地址&硬件地址

在这里插入图片描述

4.1.4. 地址解析协议ARP

在这里插入图片描述

  • 已知IP,找出硬件地址
  • 每个主机有ARP高速缓存, 有本局域网主机&路由器IP->硬件地址的映射表, 动态更新
    • A->B, 擦护照是否有IP地址, 有则查硬件地址,写MAC帧发送, 查不到则运行ARP
    • ARP: 广播ARP请求分组; 所有主机ARP进程收到; 一致则接收存储, 响应
    • 高速缓存10~20min生存时间
  • ARP只解决同一局域网映射问题, 跨局域网由路由器解析解决
  • 主机用户不知道地址解析过长

4.1.5. IP数据报

在这里插入图片描述

  • 首部(固定部分20byte
    1. 版本: 4b, 通信双方IP版本须一致, 目前广泛使用IPv4
    2. 首部长度: 4b, 单位32位字, 最小值5(20B), 最大值15(60B), 首部长度非4整数倍时要用填充字段填充. 即IP数据报数据部分永远在4字节整数倍开始
    3. 区分服务: 8b, (服务类型) 一般不用?
    4. 总长度: 16b, 首部+数据, 数据包最大长65535, IP层下每种链路协议规定最大传送单元MTU, 超过分片;
    5. 标识: 16b, 每产生1数据报+1, 用于标记数据分片重组
    6. 标志: 3b, 低位,中位有意义
      1. 低位: MF=1 后面还有分片, MF=0 已是最后一个
      2. 中位: DF=1 不能分片, DF=0允许分片
    7. 片偏移: 13b, 较长分组在分片后, 某片在原分组的相对位置
    8. 生存时间: 8b, TTL 防止无法交付的数据报无限循环, 之后改成了跳数限制, 路由器转发前-1, =0丢弃, =1仅在局域网传送
    9. 协议: 8b, 携带数据使用什么协议
      1. ICMP:1, IGMP:2, IP:4, TCP:6, EGP:8, IGP:9, UDP:17, IPv6:41, ESP:50, OSPF:89
    10. 首部检验和: 16b, 只检验首部(不包括数据), 发送:所有16位字求和,写入反码; 接收:所有16位字求和取反码=0
    11. 源地址: 32b
    12. 目的地址: 32b
  • 首部(可变部分, 1-40B, 增加路由器开销, 少用

4.1.6. IP转发分组

在这里插入图片描述

  • 路由表的每条路由记录(目的网络地址, 下一跳地址)
    • IP数据包最终一定可找到目的主机所在目的网络的路由器(可能多次间接交付
    • 只有到最后一个路由器, 才是图直接交付
  • 特定主机路由: 允许特例: 对特定目的主机指明一个路由, 方便控制网络,测试网络
  • 默认路由: 减少路由表占空间和搜索时间

4.2. 划分子网&构造超网

4.2.1. 划分子网

  • IP地址设计不合理: IP空间利用率有时很低; 每个物理网络分配网络号使路由表过大; 两级IP地址不够灵活;
  • 1985年起IP增加子网号字段, IP地址 ::= {<网络号>, <子网号>, <主机号>} (增加灵活性,减少主机总数
    1. 拥有许多物理网络的单位, 可将其划分若干子网, 对外表现为1网络
    2. 从主机号借若干位为子网号subnet-id
    3. IP数据包根据网络号扎到路由器, 按子网号找到子网, 交付
  • 子网掩码: IP本身无法解析子网划分
    • 所有网络必须使用子网掩码, 路由表也有此栏, 不划分子网用默认子网掩码
      • 在这里插入图片描述

4.2.2. 无分类编址CIDR(超网

  • 无分类域间路由选择
    1. 消除ABC和子网概念, 更有效分配IPV4. IP地址 ::= {<网络前缀>, <主机号>} IP后+/(网络前缀位数)
    2. 网络前缀相同的连续IP组成CIDR地址块 (可从任意地址的到max min地址
  • 最长前缀匹配
  • 二叉树检索

4.3. 网际控制报文协议ICMP

  • 网际控制报文协议ICMP (Internet Control Message Protocol) 位于IP层, 数据报地数据
    • 为了有效转发IP, 提高交付成功机会
      • 在这里插入图片描述

4.3.1. ICMP分类

  1. ICMP差错报告报文
  2. ICMP询问报文
    在这里插入图片描述
  • “信息请求&回答报文”, “地址掩码请求&回答报文”, "路由器请求&通告报文"不再使用

  • 差错报告报文

    1. 终点不可达: 路由器/主机不能交付数据报则向源点发送终点不可达报文
    2. 源点抑制: 路由器/主机由于拥塞丢弃数据报, 发送报文使源点知晓要放慢
    3. 时间超过: 路由器收到生存时间>0, 丢弃且向源点发超时报文; 终点再预先规定时间不能收到全部数据报片, 将已收到都丢弃, 向源点发送超时报文
    4. 参数问题: 路由器/目标主机收到数据报首部有的字段值错误, 丢弃并向源点发送
    5. 改变路由(重定向): 发给主机使其知道下次发给另外路由器
  • ICMP差错报告报文

    • 收到要差错报告的IP数据报首部+数据字段前8字节(得到端口号&序号)+差错报告报文前8字节在这里插入图片描述
  • ICMP差错报告报文, 有四不发

    1. ICMP差错报告报文的ICMP不发
    2. 首个分片数据报片所有后续数据报片不发
    3. 多播地址数据报不发
    4. 特殊地址不发
  • 常用ICMP

    1. 回送请求&回答: 主机/路由器向特定主机询问, 收到后给源主机/路由器发ICMP回送回答报文, 用于测试是否可达和获取状态
    2. 时间戳请求&回答: 请某主机/路由器回答当前日期&时间, 32b, 1900/1/1->当前, 用于时钟同步,测量时间

4.3.2. ICMP应用

  1. ping: 使用ICMP回送请求,回送回答报文, 不通过TCP/UDP
  2. traceroute(unix)/tracert(win): 获取到目标主机路由信息

4.4. 路由选择协议

4.4.1.基本概念

1. 理想的路由算法: 1.  算法正确和完整: 沿各路由表指引的路由, 分组一定能到目的网络&主机2. 算法计算简单: 通信开销小3. 自适应性: 适应通信量&网络拓扑变化, 可均衡负载, 改变路由4. 稳定性: 通信量&拓扑稳定时, 收敛于可接受的解5. 公平: 对所有用户平等6. 最佳: 能找到最好路由, 时延最小, 吞吐量最大
2. 分层次路由选择协议1. 内部网关协议IGP: 自治系统内部使用路由选择协议, 与其他系统无关, 如RIP, OSPF协议2. 外部网关协议EGP: 源主机&目的主机在不同自治系统, 到边界时需要和传递, 如BGP-43. 

4.4.2. 内部网关协议RIP

  • RIP (Routing Information Protocol) 路由信息协议, 内部网关协议IGP中最先广泛使用, 分布式的基于距离向量的路由选择协议, 使得每个路由器到每个目的网络路由最短; 使用UDP传送
  • 距离: 跳数, 经过几跳到达终点
    • 允许一条路径最多15个路由器, ==16不可达, 故RIP只适用于小型互联网
  • 特点
    1. 仅和相邻路由器交换信息
    2. 交换本路由器的路由表
    3. 固定时间间隔交换路由表, 通过距离向量算法找出最短距离
    4. 实现简单,开销小
    5. 限制了网络规模,最大距离15,坏消息传播慢
  • 距离向量算法: 对每个相邻路由器的RIP报文
    1. 对地址X的相邻路由器的RIP报文, 修改报文的所有项目(到目的网络N,距离d,下一跳路由器X), 下一跳字段地址改X, 所有距离+1
    2. 对修改后的RIP报文所有项目的操作
      if 原路由表无目的网络N添加项目到路由表
      elseif 下一跳路由器地址X收到的项目替换原路由表项目elseif 收到项目距离d<路由表距离更新
      
    3. RIP报文格式: 首部+路由, 最大长度4+20x25=504
      1. 在这里插入图片描述
      2. 首部: 4B, 命令字段指出报文意义, 1:请求路由信息, 2:请求路由信息响应/未被请求发出的路由更新报文, 必为0为了对齐
      3. 路由: 若干路由信息组成, 每个20B, 一个RIP最多25个路由
        1. 地址族标识符: 标志所用的地址协议, 2:IP地址
        2. 路由标记: 填入自治系统号ASN, 区分系统外路由
  • 缺点: 网络故障时, 要长时间才能将信息传送到所有路由器

4.4.3 内部网关协议OSPF

  • OSPF: 开发最短路径优先, 使用分布式的链路状态协议
    1. 向本系统所有路由器发信息(泛洪法,路由器通过所有端口向所有相邻路由器发信息, 每个相邻路由器再发往其他路由器, 除了刚才的, 最终所有路由器得到副本)
    2. 发送的信息:与本路由器相邻的所有路由器链路状态(本路由器和水相邻,度量(费用,距离,时延,带宽))
    3. 链路状态变化时向所有路由器泛红发送(RIP定期发送)
  • 特点
    • 所有路由器都能建立链路状态数据库(全网拓扑结构图), 每个路由器都知道全网多少路由器, 哪些相连
    • 可以快速更新, 更新收敛快
    1. 允许管理员给每条路有指派不同代价: 对不同类型业务可计算出不同路由
    2. 负载均衡: 同一目的网络多条相同代价的路径, 可将通信量分配
    3. 鉴别能力, 保证仅通信可信赖路由器
    4. 支持可变长度子网划分, 无分类编址CIDR
    5. 每个链路带32位序号, 越大越新
  • 区域: 为扩大规模, 一个自治系统划分多个更小范围, 每个区域一个32位标识符
    • 在这里插入图片描述
    • 限制泛洪法范围
    • 层次结构的区域划分:
    • 主干区域: 上层区域, 0.0.0.0,
    • 区域边界路由器: 概括其他区域来的信息
    • 主干区域: 在主干区域内的路由器
    • 自治系统边界路由器: 主干区域内和其他自治系统交换路由信息
  • 帧组成
    • 在这里插入图片描述
    • OSPF直接用IP数据报传送
    1. 版本: 2
    2. 类型: 五种类型分组
    3. 分组长度: OSPF首部在内的分组长度, 字节为单位
    4. 路由器标识符: 标志发送该分组路由器接口的IP
    5. 区域标识符: 分组属于的区域
    6. 检验和: 检测分组的差错
    7. 鉴别类型: 0:不用 1:口令
    8. 鉴别: 鉴别类型0则填0, 1则填8B口令
  • 五种分组类型, 问候+四种同步分组
    1. 问候分组 Hello: 发现和维持邻站的可达性, 每10s交换一次
    2. 数据库描述分组 Database Description: 向邻站给出链路状态数据库的所有链路状态项目的摘要信息
    3. 链路状态请求 Link State Request: 相对方请求发送某些链路状态项目详细信息
    4. 链路状态更新 Link State Update: 泛洪法对全网更新链路状态
    5. 链路状态确认 Link State Acknowledgement: 确认链路更新分组
    • 完全邻接: 两个同步的路由器
      • 在这里插入图片描述
  • 可靠的泛洪法
    • 在这里插入图片描述

4.4.4. 外部网关协议BGP

  • 考虑安全等原因, BGP要找到比较好的路由, 而不是最佳路由; 使用路径向量路由选择协议
    • 配置BGP时每个自治系统管理员选择至少1路由器位BGP发言人(常为BGP边界路由器)
    • BGP发言人与其他AS的BGP繁衍人交换路由信息, 先建立TCP连接(port:179), 交换BGP报文来建立会话, 利用会话交换路由信息(新增撤销差错)
    • 邻站/对等站: 使用TCP连接交换路由信息的俩BGP发言人
    • 在这里插入图片描述
    • BGP发言人构造的自治系统连通图, 树状结构无回路
    • BGP支持无分类域间路由选择CIDR
  • 四种报文:
    1. OPEN 打开: 与相邻BGP建立关系, 初始化通信
    2. UPDATE 更新: 通告某一路由信息, 列出要撤销的多条路由
    3. KEEPALIVE 保活: 周期性证实邻站连通性, 19B, 30s
    4. NOTIFICATION 通知: 发送检测到的差错
  • 帧格式: 通用首部19B, 标记16B+长度2B+类型1B
    • 在这里插入图片描述
    • OPEN报文
      1. 版本 1B, 4
      2. 本自治系统号 2B, 使用全球唯一的16位自治系统号
      3. 保持时间 2B, 以秒计算的保持为邻站关系的时间
      4. BGP标识符 4B, 路由器IP
      5. 可选参数长度 1B
      6. 可选参数
    • UPDATE
      1. 不可行路由长度 2B, 指明下一个字段长
      2. 所有要撤销的路由
      3. 路径属性总长度 2B, 下一个字段长度
      4. 路径属性 定义该报文中增加的路径属性
      5. 网络层可达性信息NLRI
    • KEEPALIVE: 只有通用部首
    • NOTIFICATION:
      1. 差错代码 1B
      2. 差错子代码 1B
      3. 差错数据 诊断信息

4.4.5. 路由器构成

在这里插入图片描述

  • 路由选择部分: 控制部分, 核心是选择处理机, 根据选定路由选择协议构造路由表, 定期交换维护路由表
  • 分组转发部分:
    • 交换结构
    • 输入端口
    • 输出端口

4.5. IP多播

  • IP多播
    1. 只在本局域网硬件多播
    2. 因特网范围多播
  • 多播数据报目的地址写入多播组标识符(D类地址), 不产生ICMP(ping无回应)
    • 224.0.0.0 基地址(保留)
    • 224.0.0.1 本子网所有参加多播的主机&路由器
    • 224.0.0.2 本子网所有参加多播的路由器
    • 224.0.0.3 未指派
    • 224.0.0.4 DVMRP路由器
    • 223.0.1.0-238.255.255.255 全球范围可用多播地址
    • 239.0.0.0-239.255.255.255 限制在一个组织的范围

4.5.1. 局域网硬件多播

硬件地址1字节最低位-1为多播地址, 01-00-5E-00-00-00 - 01-00-5E-7F-7F-FF
收到多播数据报的书籍要在IP层利用软件过滤, 过滤不是本主机要接收的数据报

4.5.2. 网际组管理IGMP&多播路由选择协议

  • 网际组管理协议IGMP: 让连接在本地局域网的多播路由器知道本局域网上是否有主机(进程)参加/退出某多播组
    • 网际协议IP的一部分
    1. 1阶段: 某主机加入新多播组, 向多播组的多播地址发送IGMP报文; 多播路由器接收后, 用多播路由选择协议将组成员关系转发给其他多播路由器
    2. 2阶段: 组成员关系是动态的, 多播路由器周期性探询本地主机是否还是组成员: 一个主机响应则组活跃, 几次都不响应则都离开
  • 多播路由选择协议: 多播路由器要和因特网其他多播路由器协同工作
    • 找出源主机为根节点的多播转发树
      1. 泛洪&剪除, 反向路径广播RPB 在这里插入图片描述
      2. 隧道技术 IP-in-IP 在这里插入图片描述
      3. 基于核心的发现技术
    • 非标准, 建议使用的多播路由选择协议
      1. 距离向量多播路由选择协议DVMRP
      2. 基于核心的转发树CBT
      3. 开放最短通道优先的多播扩展MOSPF
      4. 协议无关多播-稀疏方式PIM-SM
      5. 协议无关多播-密集方式PIM-DM

4.6. 虚拟专用网VPN & 网络地址转换NAT

4.6.1. 虚拟专用网VPN

  • 节省IP, 所有数据加密
  • 专用地址: 只能用于一个机构内部通信, 所有路由器对目的地址为专用地址的数据报一律不转发
    1. 10.0.0.0 - 10.255.255.255 (10.0.0.0/8 24位块)
    2. 172.16.0.0 - 172.31.255.255 (172.16.0.0/12 20位块)
    3. 192.168.0.0 - 192.168.255.255 (192.168.0.0/16 16位块)

虚拟专用网VPN Virtual Private Network
在这里插入图片描述

4.6.2. 网络地址转换NAT

  • NAT Network Address Translation 专用网内部已分配到本地IP的主机, 又希望非加密连因特网, 连接至少有一个IP的NAT路由器, 有n个全球ip则最多同时n主机接入因特网,不够轮流
    在这里插入图片描述
  • 通信必须专用网内主机发起, 反向不行, 故专用网内主机不能当服务器
  • NAPT: 使用端口号的NAT, 多个主机共用1ip

5. 传输层

5.1.1. 传输层

  • 传输层: 向上面的应用层提供通信服务
    2. 提供应用间的逻辑通信
    3. 对收到报文差错检测(网络层仅检查首部)
    4. 屏蔽了下方网络核心的细节
  • 复用: 应用所有进程都可通过传输层再到IP层
  • 分用: 传输层从IP层收到数据交付指明的应用

在这里插入图片描述

  1. 用户数据报协议UDP User Datagram Protocol: 传输前无需连接, 收到不用确认, 不提供可靠交付, 高效
  2. 传输控制协议TCP Transmission Control Protocol: 面向连接的服务, 必须先建立连接, 结束后释放连接, 不提供广播多播, 提供可靠的面向连接的传输, 开销大首部多占用处理, 有确认,流控,计时和连接管理

在这里插入图片描述

5.1.2. 端口

  • 传送的报文交到目标主机某个合适的目的端口, 余下工作TCP完成
  1. 服务端用的端口号
    1. 熟知端口号/系统端口号 0~1023, 指派给TCP/IP最重要的应用
      1. 在这里插入图片描述
    2. 登记端口号, 1024~49151, 按IANA规定手续登记防重复
  2. 客户端使用端口号(短暂端口号), 49152~65535, 客户端进程同意必须部分时动态选择

5.2. 用户数据报协议UDP

  • 特点
    1. 无连接, 开销时延小
    2. 尽最大努力交付, 无需维持复杂的连接状态
    3. 面向报文, 一次交付完整的报文, 报文边界不合不拆
    4. 无拥塞机制, 拥塞降低速率
    5. 支持1v1, 1vn, nvn
    6. 首部开销小 8B, (TCP20B
  • 首部格式
    • 在这里插入图片描述
    • 首部字段 8B
      1. 源端口, 需要回信使用, 不需要=0
      2. 目的端口, 终点交付使用; 接收方发现端口不正确丢弃, ICMP发端口不可达
      3. 长度, 用户数据报长度, min=8(仅首部)
      4. 检验和, 检测传输中是否有差错, 有错丢弃; 首部和数据一起检验, 非偶数填0
    • 伪首部: 计算检验和时数据报前+12B伪首部(临时), 不向上向下传递

5.3. 传输控制协议TCP

  • 特点
    1. 面向连接的传输层协议, 传前建立传后释放
    2. 仅1v1
    3. 可靠交付, 无差错,不丢失,不重复,按序到达
    4. 全双工通信, 双方有收发缓存
    5. 面向字节流, TCP将应用交下的数据看成连串无结构字节流, 不保证接收方收的数据块与发送方发的数据块大小对应(发10个块收4个块
      6. 在这里插入图片描述
      7. 根据对方窗口值和网络拥塞成都决定

5.3.1. TCP连接

  • 套接字socket / 插口: TCP连接的端点, 每条TCP连接唯一被通信两端两个socket确定

    • socket = (IP地址: 端口号) 如(192.3.4.5: 80)
  • socket概念混淆

    • 允许app访问联网协议的应用编程接口API, 简称socket
    • socketAPI使用的函数名
    • 调用socket函数的端点 (创建一个数据报socket
    • 调用socket函数时返回值是socket描述符, 简称socket
    • 操作系统内核连网协议Berkeley实现, 称socket实现

5.3.2. 可靠传输工作原理

  • 停止等待协议
    • 在这里插入图片描述
    • 超时重传: 每发送完1分组, 保留副本, 设超时计时器, 分组和确认分组编号, 超过一段时间未收到确认则重新发送, 重传时间>平均往返时间
    • 确认丢失,确认迟到
      • 在这里插入图片描述
  • 连续ARQ协议
    • 为提高信道利用率,采用流水线传输, 可连续发多个无需等待
      • 在这里插入图片描述
      • 发送方每收到一个确认将发送窗口滑动1分组; 接收方对按序到达最后一个分组确认

5.3.3. TCP报文首部

在这里插入图片描述

  • 首部
    1. 源端口: 2B
    2. 目的端口: 2B
    3. 序号: 4B, 溢出归0; 每个字节按顺序编号,(字段值301,数据100字节,则下一个序号400
    4. 确认号: 4B, 期望收到对方下一个报文段首个数据字节序号 (A发501 200, B确认报文段701
    5. 数据偏移: 4b, 数据起始处距离报文段起始处多远(即首部长度. 最长40B
    6. 保留: 6b, 0
    7. 紧急URG: 1b, =1时高优先级数据, 插到最前面
    8. 确认ACK: 1b, =1确认有效, =0确认号无效
    9. 推送PSH: 1b, 应用希望键入命令立即收到对方响应, 接收方尽快交付而不是等填满
    10. 复位RST: 1b TCP连接有严重差错, 必须释放连接重新建立; 拒绝非法报文段/拒绝打开
    11. 同步SYN: 1b 连接建立时同步序号, SYN=1,ACK=0时 此为连接请求报文段,若同意建立连接, 响应报文段中使SYN=1,ACK=1, SYN=1标识是连接请求/连接接受报文
    12. 终止FIN: 1b: 释放连接
    13. 窗口: 2B, 发送本段报文一方的接收窗口
    14. 检验和: 2B, 加伪首部求和
    15. 紧急指针: 2B, URG=1时有意义,指出紧急数据字节数, 窗口0也可发紧急数据
    16. 选项: 可变长, 最长40B
      1. 最大报文段长度MSS: 每个TCO报文段中数据字段最大长度
      2. 窗口扩大选项 3B
      3. 时间戳选项 10B
      4. 选择确认

5.4. TCP可靠传输

5.4.1. 字节为单位的滑动窗口

在这里插入图片描述

  1. A发送窗口根据B接收窗口设置, 但不一定等大; A可能根据拥塞情况减小窗口
  2. 不按序到达, 通常临时存放在接收窗口, 到达后再按序交付
  3. 接收方必须有累积确认, 减小传输开销

5.4.2. 超时重传时间选择

  • 自适应算法: 报文段往返时间RTT 新RTTs = (1-α) x (旧RTTs) + α x (新RTT样本)
  • 超时重传时间RTO=RTTs + 4 x RTTd(RTT偏差加权平均)
    • 每重传一次, 超时重传时间RTO增大些

5.5. 流量控制

  • 流量控制: 让发送速率别太快, 接收方来得及接收
  • 持续计时器: 防止双方等待死锁, 一方接到另一方零窗口, 持续计时器, 到期发零窗口探测报文段
  • 控制发送时机
    • MSS 最大报文段长度: 应用给到TCP缓存, 满此长度发送
    • 发送方的应用指明发送报文 (PUSH操作
    • 发送方计时器到就发
    • Nagle算法: 若发送要逐个字节给到发送缓存, 发送方把第一个数据字节先发送, 后面字节缓存, 收到确认后再把所有数据组装成报文段发送, 继续对后续缓存
    • 糊涂窗口综合征: 接收方缓存满但ap只娶一个字节: 让接收方等一段时间/接收缓存有一半空闲时间

5.6. TCP拥塞控制

  • 拥塞控制: 防止过多数据注入网络, 都不过载, 设计所有主机和路由器
    在这里插入图片描述

  • 拥塞控制方法

    1. 慢开始&拥塞避免: 发送方维持拥塞窗口, 使发送窗口=拥塞窗口, 只要未出现拥塞. 无拥塞增大,拥塞则减小
    2. 慢开始: 由小到大逐渐增大发送窗口,试探拥塞情况
    3. 拥塞避免: 拥塞窗口线性规律缓慢增长
      4. 在这里插入图片描述
    4. 快重传: 接收方每收到失序报文段就立即发出重复确认
    5. 快恢复
      发送方窗口上限值 = Min [rwnd(接收方窗口), 拥塞窗口(cwnd)]
  • 随机早期检测RED: 防止路由器尾部丢弃出现和恢复时, 许多TCP同一时间慢开始, 同一时间恢复使通信量大很多; 拥塞早期征兆时开始丢弃; THmax=2THmin

    1. 平均队列长度<最小门限THmin, 新到分组放入队列排队
    2. 平均队列长度>最大门限THmax, 新到分组丢弃
    3. THmin<平均队列长度<THmax, 按概率p丢弃

在这里插入图片描述

5.7.TCP运输连接管理

  • 运输连接三阶段: 连接建立,数据传送,连接释放
  • 目的
    1. 每一方知道对方存在
    2. 双方协商参数(最大窗口值,是否使用窗口扩大选项,时间戳,服务质量等)
    3. 对运输实体资源(缓存,连接表项目)分配
  • client: 主动发起连接建立的应用
  • server: 被动等待连接建立的app

5.7.1. TCP连接建立: 三次握手

在这里插入图片描述
TCB传输控制模块: client创建后发请求, server创建后进入LISTEN状态

  • A第二次确认: 防止已失效的连接突然又传到B

5.7.2. TCP连接释放: 四次挥手

在这里插入图片描述

  • A最后等待: 防止ack丢失,B重传
  • 保活计时器: 主机故障服务器收不到, 每收到重新设置, 每收到就探测, 无响应则关闭

TCP有限状态机

在这里插入图片描述

  • 粗实线: client变化
  • 粗虚线: server变化
  • 细线: 异常

6. 应用层

6.1. DNS域名系统

  • Domain Name System DNS域名系统: 联机分布式数据库系统, 客户-服务器方式

    • 应用需要解析主机名为IP时, 调用解析程序, 成为DNS的一个客户, 将待解析域名放在DNS请求报文, 成为DNS的一个客户, 将待解析域名放在DNS请求报文, 以UDP方式发给本地域名服务器; 域名服务器查找后返回
  • 域名结构

    • 三级域名.二级域名.顶级域名
    • 标号有英文+数字组成, 每个标号<63字符, 不区分大小写字母; 多个标号组成完整域名<255字符
  • 顶级域名分类

    1. 国家顶级域名nTLD: cn, us, uk
    2. 通用顶级域名gTLD: com, net, org, int, edu, gov, mil…
    3. 基础结构域名(反向域名), 只有一个arpa, 用于反向域名解析

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 域名服务器

    • 根域名服务器: 最高层次最重要的域名服务器, 知道所有顶级域名服务器域名和ip, DNS客户向某个根域名服务器查询, 路由器能找到最近的根域名服务器
    • 顶级域名服务器TLD: 管理该顶级域名服务器注册的所有二级域名
    • 权限域名服务器: 负责一个区的域名服务器
    • 本地域名服务器: 主机发出DNS查询请求时, 请求报文发给本地域名服务器
  • 高速缓存: 存放最近查询过的域名和记录, 减轻负荷, 在本地域名服务器/主机内

  • 域名解析过程

    1. 主机向域名服务器采用递归查询: 主机查询本地域名服务器不知道的ip, 本地域名服务器以DNS客户身份向其他根域名服务器发出查询请求报文
    2. 本地域名服务器向根域名服务器查询用迭代查询: 根域名服务器收到查询请求, 给出ip/告知下一步向谁查询,让本地域名服务器继续查询
    3. 在这里插入图片描述

6.2. 文件传送协议

6.2.1. FTP文件传送协议 File Transfer Protocol

  • FTP File Transfer Protocol: 提供交互式访问, 允许客户知名文件类型&格式,允许具有存储权限

    • FTP提供文件传送的基本服务, 使用TCP, 客户-服务器模式
    • 服务器进程: 主进程(接受新请求) + 从属进程(处理单个请求)
    • 主进程工作步骤:
      1. 打开熟知端口21, 使客户端能连接
      2. 等待客户进程发出连接请求
      3. 启动从属进程处理客户进程的请求(处理完就终止,可能还有子进程)
      4. 回到等待状态, 继续接受其他客户进程请求
    • 传输文件时建立并行TCP连接
      1. 控制连接 p21: 会话期间保持打开, 传送请求, 带外传送
      2. 数据连接 p20: 实际传输文件
  • 网络文件系统NFS: 允许应用打开远地文件, 在特定位置上读写, 而不需要复制整个文件

6.2.3. 简单文件传送协议TFTP Trivial File Transfer Protocol

  • 使用客户-服务器方式, 使用UDP, 熟知端口号69
  • 优点:
    1. 可用于UDP环境, 需要程序/文件同时向多机器下载时使用
    2. TFTP代码占内存小, 小型计算机可用
  • 特点
    1. 每次传送数据报文有512B数据, 最后一次可不足
    2. 数据报文按序编号, 1开始
    3. 支持ASCII码/二进制传送
    4. 可对文件读写
    5. 简单首部
  • 发送一个文件块等待确认, 等不到重发, 接收方收不到也重发确认

6.3. 远程终端协议TELNET

  • 终端仿真协议: 将用户击键传到远地主机, 输出返回用户屏幕, 模式类似FTP

6.4. 万维网WWW

  • 超文本: 指向其他文档的链接的文本, 有多个信息源链接成, 数量不受限
  • 超媒体系统: 超文本的扩充, 包含图形,图像,声音,动画等

6.4.1. 统一资源定位符URL

  • URL: 从因特网得到资源位置和访问这些资源的方法
    • <协议>://<主机>:<端口>/<路径>
      • 协议: 用什么协议获取文档, 常用http, https, ftp
      • 主机, 万维网文档在哪个主机
  • 基于HTTP的URL: http://<主机>:<端口>/<路径>
    • 默认80, 指向某个主页

6.4.2. 超文本传输协议HTTP

在这里插入图片描述

  • 每个万维网网点有服务器进程,监听端口80,发现是否有浏览器, 有TCP链接后响应返回页面, 最后释放

  • HTTP客户 - 服务器每次交互由ASCII码串构成的请求和类似通用因特网邮件扩充(MIME-like)响应组成

  • 无连接, 无状态: 利于服务器支持大量并发HTTP请求

  • HTTP/1.0: 每个文档有两倍RTT开销, 每次建立新连接, 负担重

  • HTTP/1.1: 持续链接, 一段时间保持连接

    • 非流水线方式: 客户收到前一个响应才发出下一个请求
    • 流水线方式: 客户收到HTTP响应报文前能接着发送新的请求报文, 服务器可连续发送
  • 代理服务器: 万维网高速缓存, 把最近一些请求-响应缓存在本地, 新请求到达时如有则返回暂存响应, 不用打扰服务器

  • HTTP报文结构

    • 在这里插入图片描述
    • 请求报文: 客户->服务器发请求报文
      1. 开始行: 区分请求/响应
        方法意义
        OPTION请求一些选项的信息
        GET请求读取由URL标志的信息
        HEAD请求读取URL标志的信息的首部
        POST给服务器添加信息
        PUT指明的URL下存储一个文档
        DELETE删除指明的URL所标志的资源
        TRACE环回测试的请求报文
        CONNECT用于代理服务器
      2. 首部行: 说明浏览器,服务器,报文主体信息
      3. 实体主题: 请求无,响应也可能无
    • 响应报文: 服务器到客户的回答
      1. 状态行: HTTP版本,状态码,解释状态码
        1. 1xx:通知信息,请求收到/正在处理
        2. 2xx:成功
        3. 3xx:重定向, 要完成请求有进一步行动
        4. 4xx:客户差错, 请求中有错误的语法/不能完成
        5. 5xx:服务器的差错, 服务器失效无法完成请求
        • 如 202 Accepted 400 Bad Request 404 Not Found
  • Cookie: 服务器和客户之间传递的状态信息, 跟踪用户,

    • A浏览网站, 服务器生成唯一识别码, 在服务器后端数据库产生1项目, 在HTTP响应报文数据库添加Setcookie的首部行
    • A收到响应, 浏览器在Cookie文件加一行, 继续浏览该网站时在HTTP请求报文首部行加入
  • HTML超文本标记语言HTML: 浏览器读取文档后按照标签排版显示

  • XML可扩展标记语言XML: 类似HTML, 但为了传输数据

  • XHTML可扩展超文本标记语言, 更严格的HTML版本

  • CSS层叠样式表: 用于格式化结构化内容, 字体颜色编剧高度宽度等

  • 静态文档: 创作完存放在服务器, 浏览过程不会改变

  • 动态文档: 浏览器访问服务器时才应用程序动态创建, 请求到达时运行另一个应用, 输出HTTP文档, 这是不断变化的, 比如股市,天气等

    • CGI(脚本) 通用网关接口: 任何语言通用,可能要访问其他服务器资源
  • 活动万维网文档:

    • 服务器推送: 服务器不断运行动态文档关联的应用定期更新信息
    • 活动文档: 所有工作转移给浏览器, 服务器返回活动文档程序副本
  • Java可创建和与逆行活动文档, "小应用程序"描述活动文档程序

  • AWT: Java运行环境,高级图形接口软件等

  • 信息检索系统

    • 全文检索搜索: 通过搜索软件在各网站搜索信息,以一定规则建立很大的在线数据库供用户查询
    • 分类目录搜索: 不采集网站任何信息, 利用各网站向搜索引擎提交网站信息的关键词和网站描述, 人工审核编辑后如符合登陆条件, 输入数据库
    • 垂直搜索引擎, 针对特定领域人群需求索索
  • 博客&微博&轻博

6.5. 电子邮件

  • 简单邮件传送协议SMTP

  • 通用因特网邮件扩充MIME: 首部中说明了数据类型(文本,声音,图像,视像)

  • 电子邮件系统: 用户代理,邮件服务器,邮件发送协议(SMTP)&邮件读取协议(POP3)

    • 电子邮件主要组成
    1. 用户代理: 用户与电子邮件系统的接口, 是PC的程序(邮件客户端), 功能包括撰写,显示,处理,通信, 使用发邮件的SMTP协议和读邮件的POP3(都基于TCP)
  • 简单邮件传送协议SMTP: 客户-服务器方式, 14命令21应答

    1. 连接建立, 不使用中间邮件服务器, 直接建立TCP
    2. 邮件传送: RCPT命令:弄清接收方系统做好接收邮件的准备
    3. 连接释放:
    • 缺点
      1. 不能传可执行文件/二进制对象
      2. 限于传送7位ASCII码, 非英文文字不能发
      3. SMTP服务器拒绝超一定长度的邮件
      4. 某些实现未完全按照SMTP标准(回车换行,阶段,多余空格,tab)
  • 用户代理从接收方邮件服务器赌气邮件使用的协议

    • 邮局读取协议POP3: 客户-服务器工作, 用户一旦读取,POP服务器删除(可暂存)
    • 网际报文存取协议IMAP: 客户-服务器方式工作, 客户对服务器远地打开, 邮件默认存在服务器
  • 基于万维网的邮件

    • 在这里插入图片描述
  • 通用因特网邮件扩充MIME: 针对SMTP缺点

    • 在这里插入图片描述
    1. 定义了5个新邮件首部字段, 可包含于原邮件首部, 提供了邮件主体的信息
    2. 定义了邮件内容的格式, 对多媒体电子邮件表示方法标准化
    3. 定义了传送编码, 可对任何内容格式转换, 不被改变
      1. 7位ASCII, 每行<1k字符, 不转换
      2. quoted-printable,适用于所传送数据仅有少量非ASCII码
      3. 任意二进制文件用base64编码
    4. 内容类型: 文本,图像,音频,视频,模型,应用,报文,多部份

6.6. 动态主机配置协议DHCP

  • Dynamic Host Configuration Protocol, 即插即用连网, 允许计算机加入新网络和获取IP不用手工参与, 移到新网络就自动获取
  • 协议配置内容: IP,子网掩码,默认路由器IP地址,域名服务器IP地址
  • 客户-服务器模式, 需要IP的主机在启动时向DHCP服务器广播发送发现报文(目标IP255.255.255.255,源IP0.0.0.0), 只有DHCP服务器对此广播报文回答提供报文, 数据库查找配置,找到返回找不到分配
  • 每个网络至少1DHCP中继代理, 配置了DHCP路由器的IP
    • 在这里插入图片描述
  • 分配的IP时临时的(租用期),由DHCP服务器决定, 发出报文给出或客户请求
  • DHCP客户端口68, DHCP服务器端口67
    • 在这里插入图片描述

6.7. 简单网络管理协议SNMP

  • 网络管理(网管): 对硬件,软件,人力的使用,综合,协调, 以便对网络资源监视,测试,配置,分析,评价,控制
    • 在这里插入图片描述
    • 管理站: 网络管理系统的核心
    • 被管设备: 主机,路由器,打印机等, 要运行应用以便和管理站管理程序通信(网络管理代理程序)
  • 网管协议SNMP: 按客户-服务器方式工作, 被管对象监听管理站的SNMP客户程序的请求
    • 网络正常时统计,配置,测试; 网络故障时差错检测和恢复
    • 委托代理: 提供协议转换和过滤操作,对被管对象进行管理
    • 组成
      1. SNMP: 定义了管理站和代理之间交换的分组格式, 交换分组包含各代理的对象(变量)和状态(值), SNMP负责读取和改变数值
      2. 管理信息结构SMI: 定义了明明对象,定义对象类型的通用规则, 把对象和对象的值进行编码的规则
        1. 规定1.被管对象的明明2.存储被管对象的数据类型有哪些3.网络上传送的管理数据应如何编码
      3. 管理信息库MIB: 创建了命名对象, 规定了类型
  • 使用UDP, 开销小, 服务器端port161, 客户端port162
  • SNMP报文: 版本+首部+安全参数+数据部分
    • 读: Get报文检测各被管对象状态
    • 写: Set报文改变各被管对象状态
    • 在这里插入图片描述

6.8. 应用跨网络通信

  • 套接字接口socket, 内核的一部分
    • 在这里插入图片描述
    • 应用要使用网络通信时, 首先发出socket系统调用, 请求创建套接字(请求操作系统把网络通信所需系统资源(空间,CPU时间,带宽)分配给应用), 返回套接字描述符; 之后应用使用该套接字描述符操作; 用完后close回收描述符的所有资源
    • 在这里插入图片描述
  • 通信过程 在这里插入图片描述
    • 连接建立
      • 绑定bind: 将熟知端口号和本地IP填写到已创建套接字/内核自动分配
      • 收听listen: 被动方式随时接受客户服务请求 (UDP不使用)
      • 接受acept: 将远地客户进程发的连接请求提取, 并发方式(新建子进程和新套接字) (UDP不使用)
        • 在这里插入图片描述
      • connect: 客户调用connect和远地建立连接
    • 数据传送
      • 客户和服务器使用send发, recv收
    • 连接释放
      • close释放连接,撤销套接字

ref

  • 计算机网络

这篇关于<计算机网络>笔记1: TCP/IP五层协议的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1129696

相关文章

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

忽略某些文件 —— Git 学习笔记 05

忽略某些文件 忽略某些文件 通过.gitignore文件其他规则源如何选择规则源参考资料 对于某些文件,我们不希望把它们纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常它们都是些自动生成的文件,比如日志文件、编译过程中创建的临时文件等。 通过.gitignore文件 假设我们要忽略 lib.a 文件,那我们可以在 lib.a 所在目录下创建一个名为 .gi

取得 Git 仓库 —— Git 学习笔记 04

取得 Git 仓库 —— Git 学习笔记 04 我认为, Git 的学习分为两大块:一是工作区、索引、本地版本库之间的交互;二是本地版本库和远程版本库之间的交互。第一块是基础,第二块是难点。 下面,我们就围绕着第一部分内容来学习,先不考虑远程仓库,只考虑本地仓库。 怎样取得项目的 Git 仓库? 有两种取得 Git 项目仓库的方法。第一种是在本地创建一个新的仓库,第二种是把其他地方的某个