<计算机网络>笔记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. 概述
名词
- 因特网: 世界上最大的互联网络(用户数以亿计,设备数以百万计)
- ARPANET: 阿帕网, 1969年美国防部创建的第一个分组交换网
- 1983: TCP/IP协议成为ARPANET的标准协议, 所有用TCP/IP的计算机可以互联, 1983称为因特网诞生时间
- internet: 互联网, 通用名词, 泛指多个计算机网络连成网络
- Internet: 因特网, 专用名词, 全球最大,开放的, 众多网络互连成的特定计算机网络, 采用TCP/IP协议族作为通信规则, 前身是美国ARPANET
- 三级结构: 主干网, 地区网, 校园网(企业网)
- ISP: Internet Service Provider因特网服务提供商(电信联通移动), 可从因特网管理机构申请到IP, 拥有通信线路和路由器等联网设备
- IXP: Internet eXchange Point 因特网交换点, 允许两个网络直接相连交换分组, 不用通过第三个网络转发分组(上图)
- WWW: World Wide Web万维网, 20世纪90年代欧洲原子核阻止CERN开发
- 因特网协会Internet Society ISOC, 1992年因特网不再归美国政府管辖而成立, 对因特网进行全面管理和在世界范围内促进发展和使用
- IAB: 因特网体系结构委员会, ISOC下技术组织, 下设2工程部
- IETF Internet Engineering Task Force因特网工程部, 有许多工作组WG组成的论坛(具体工作组有IESG(因特网工程指导小组)管理). 划分若干领域, 每个领域集中研究某一特定短期中期问题(如针对协议开发和标准化)
- IRTF Internet Research Task Force因特网研究部, 由许多研究组RG组成的论坛(具体工作由IRSG因特网研究指导小组管理)
- 制定因特网正式标准经历四个阶段[RFC 2026]
- 因特网草案Internet Draft - 还不是RFC文档
- 建议标准Proposed Standard - 这个阶段开始成为RFC文档
- 草案标准Draft Standard
- 因特网标准Internet Standard
因特网组成
- 边缘部分: 所有连接在因特网上的主机组成, 用户直接使用(传音视频)信息处理
- 核心部分: 大量网络和链接网络的路由器组成, 为边缘部分提供服务(提供连通性,分组交换)
-
边缘端系统的通信方式
- 客户-服务器方式C/S: 最常用传统(邮件,查找),客户=服务请求方,服务器-服务提供方, 都要使用网络核心部分提供的服务
- 对等连接方式P2P: 主机通信不区分服务请求, 平等通信, 都可下载对方共享文档, 可支持大量对等用户(上百万)同时工作
- 客户-服务器方式C/S: 最常用传统(邮件,查找),客户=服务请求方,服务器-服务提供方, 都要使用网络核心部分提供的服务
-
核心部分
- 路由器: 实现分组交换(存储转发技术)的关键构件, 转发收到的分组(网络核心部分最重要功能)
-
网络分类
- 按作用范围: 广域网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,IPX
5. 多种类型链路: 在多种类型链路运行(串行,并行,同步,异步,低速,高速,电,光,交换,非交换, 如PPPoE
6. 差错检测: 检测帧立即丢弃差错
7. 检测连接状态: 自动检测链路是否正常工作状态
8. 最大传送单元: 对每种类型点对点链路设置最大传送单元MTU, 过长丢弃返回差错
9. 网络层地址协商: 确保通信双方知道对方ip
10. 数据压缩协商: 提供方法协商使用压缩
- 组成: 三个部分
1. 一个将IP数据报封装到串行链路的方法
2. 一个用来建立,配置和测试数据链路连接的链路控制协议LCP
3. 一套网络控制协议NCP
- PPP协议帧格式
- 各字段意义
- ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/02b8b9fe387c4721a8e8c13f84bb7a7e.png)
- F: 界定符, 表示帧开始/结束
- A,C, 可能保留无信息
- 协议字段, 0x0021:信息字段为IP数据报,0xC021:LCP数据,0x8021:网络层控制数据
- 字节填充,异步传输使用转义字符0x7D
1. 信息字段每个0x7E -> 0x7D,0x5E
2. 每个0x7D -> 0x7D,0x5D
3. 出现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. 集线器的星型拓扑
- 集线器
- 使用集线器以太网也是总线网, 使用CSMA/CD协议, 同时仅允许一个站发数据
- n个接口, RJ-45插头
- 工作于物理层, 仅转发, 无碰撞检测
- 芯片自适应串音回波抵消
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帧格式
- 位同步 8byte(硬件插入
- 目的地址 6byte:
- 源地址 6byte:
- 长度/类型字段 2byte:
- 数据字段 46byte-1500byte (64-18=46, 长度<46byte会+填充字段
- 帧检验序列FCS 4byte
-
鉴定为无效MAC帧: 简单丢弃不重传
- 帧长度非整数个字节
- 帧检验序列FCS测出错误
- MAC客户数据字段长不再46-1500之间
3.5. 扩展以太网
3.5.1. 网桥
- ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/472218ac056140279871176561218a1a.png)
- 好处
- 过滤通信量, 增大吞吐量, 使各个以太网段成为隔离开的碰撞域, 不同网段通信不会相互干扰
- 扩大物理范围
- 提高可靠性
- 可互联不同物理层, 不同MAC子层, 不同速率,
- 可使用PPP协议, 构建点对点链路
- 缺点
- 接受的帧存储和查找转发表, 执行CSMA/CD算法, 增加时延
- MAC子层无流量控制功能, 负荷重可能溢出丢帧
- 适合用户少(<几百),通信量不大的以太网, 否则传播过多引起广播风暴
3.5.2. 透明网桥
- 基于标准: IEEE 802.1D, 以太网站点不知道帧经过几个网桥; 即插即用无需配置转发表即可工作(自学习)
- 自学习,转发步骤
- 网桥收到一帧后先自学习, 查找转发表中与收到帧的源地址有无匹配项目, 无则新增有则更新
- 转发帧: 查找有无目的地址, 无则通过所有其他接口转发, 有则按表转发
- 生成树苏纳法: 互联在一起的网桥彼此通信后, 能找出原网络拓扑的子集, 该子集中联通网络不存在回路, 任何两个站仅有一条路径
3.5.3. 源路由网桥:
- 发送帧时将详细路由信息放在帧首
- 发现帧: 源站以广播方式想目的站发送, 在整个扩展的以太网沿所有可能的路由传送, 记录经过的路由, 到达时沿各自路由返回源站, 源站选择最佳路由. 之后该源站发送帧首部必须携带确定路由信息
- 帮助源站确定整个网络可通过帧最大长度
- 和透明网桥区别
- 源路由网桥对主机非透明, 主机必须知道网桥标识和连到哪个网段, 可以利用最佳路由, 平均分配通信
- 透明网桥使用生成树, 不保证最佳, 无法均衡负载
3.5.4. 多接口网桥
- 交换式集线器(二层交换机), 有十多个接口, 每个接口直接与单个主机/另外集线器相连, 工作于全双工, 每个主机无碰撞传输, 即插即用
- 优点: N个用户, 共享以太网平均带宽 1/N, 交换机1; 容易扩充; 不同速率可组合; 可用存储转发/直通; 方便地实现虚拟局域网(VLAN)
- VLAN: 局域网网段构成的与物理位置无关的逻辑组, 每个VLAN帧有明确的标识符, 指明属于哪个VLAN, 是局域网给用户提供的一种服务, 最大帧长1522=1500+18+4)
- 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. 虚拟互联网络
- 网络互连需要的中间设备
- 转发器: 物理层
- 网桥/桥接器: 链路层
- 路由器: 网络层
- 网关: 网络层以上, 连接两个不兼容系统
- IP层标准化协议, 使用各方看起来像用统一的网络, 互联网可以由多种异构网络组成
4.1.2. 分类的IP地址
- IP地址 ::= {<网络号>,<主机号>}, 指明主机和接到的网络
近年已广泛使用无分类IP进行路由, ABC类地址已成为历史
- ip地址特点
- 每个ip两部分, 分等级, IP管理机构只分配网络号,主机号自行分配; 路由器仅由网络号转发分组,更快
- IP标志一个主机&一条链路, 接到两个网络由两个ip(多归属主机) 每个路由器至少2ip
- 用转发器/网桥连接的若干局域网是一个网络, 只有一个网络号
- 因特网同等对待每个ip
- 无编号网络: 路由器直接相连
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
- 版本: 4b, 通信双方IP版本须一致, 目前广泛使用IPv4
- 首部长度: 4b, 单位32位字, 最小值5(20B), 最大值15(60B), 首部长度非4整数倍时要用填充字段填充. 即IP数据报数据部分永远在4字节整数倍开始
- 区分服务: 8b, (服务类型) 一般不用?
- 总长度: 16b, 首部+数据, 数据包最大长65535, IP层下每种链路协议规定最大传送单元MTU, 超过分片;
- 标识: 16b, 每产生1数据报+1, 用于标记数据分片重组
- 标志: 3b, 低位,中位有意义
- 低位: MF=1 后面还有分片, MF=0 已是最后一个
- 中位: DF=1 不能分片, DF=0允许分片
- 片偏移: 13b, 较长分组在分片后, 某片在原分组的相对位置
- 生存时间: 8b, TTL 防止无法交付的数据报无限循环, 之后改成了跳数限制, 路由器转发前-1, =0丢弃, =1仅在局域网传送
- 协议: 8b, 携带数据使用什么协议
- ICMP:1, IGMP:2, IP:4, TCP:6, EGP:8, IGP:9, UDP:17, IPv6:41, ESP:50, OSPF:89
- 首部检验和: 16b, 只检验首部(不包括数据), 发送:所有16位字求和,写入反码; 接收:所有16位字求和取反码=0
- 源地址: 32b
- 目的地址: 32b
- 首部(可变部分, 1-40B, 增加路由器开销, 少用
4.1.6. IP转发分组
- 路由表的每条路由记录(目的网络地址, 下一跳地址)
- IP数据包最终一定可找到目的主机所在目的网络的路由器(可能多次间接交付
- 只有到最后一个路由器, 才是图直接交付
- 特定主机路由: 允许特例: 对特定目的主机指明一个路由, 方便控制网络,测试网络
- 默认路由: 减少路由表占空间和搜索时间
4.2. 划分子网&构造超网
4.2.1. 划分子网
- IP地址设计不合理: IP空间利用率有时很低; 每个物理网络分配网络号使路由表过大; 两级IP地址不够灵活;
- 1985年起IP增加子网号字段, IP地址 ::= {<网络号>, <子网号>, <主机号>} (增加灵活性,减少主机总数
- 拥有许多物理网络的单位, 可将其划分若干子网, 对外表现为1网络
- 从主机号借若干位为子网号subnet-id
- IP数据包根据网络号扎到路由器, 按子网号找到子网, 交付
- 子网掩码: IP本身无法解析子网划分
- 所有网络必须使用子网掩码, 路由表也有此栏, 不划分子网用默认子网掩码
- 所有网络必须使用子网掩码, 路由表也有此栏, 不划分子网用默认子网掩码
4.2.2. 无分类编址CIDR(超网
- 无分类域间路由选择
- 消除ABC和子网概念, 更有效分配IPV4. IP地址 ::= {<网络前缀>, <主机号>} IP后+/(网络前缀位数)
- 网络前缀相同的连续IP组成CIDR地址块 (可从任意地址的到max min地址
- 最长前缀匹配
- 二叉树检索
4.3. 网际控制报文协议ICMP
- 网际控制报文协议ICMP (Internet Control Message Protocol) 位于IP层, 数据报地数据
- 为了有效转发IP, 提高交付成功机会
- 为了有效转发IP, 提高交付成功机会
4.3.1. ICMP分类
- ICMP差错报告报文
- ICMP询问报文
-
“信息请求&回答报文”, “地址掩码请求&回答报文”, "路由器请求&通告报文"不再使用
-
差错报告报文
- 终点不可达: 路由器/主机不能交付数据报则向源点发送终点不可达报文
- 源点抑制: 路由器/主机由于拥塞丢弃数据报, 发送报文使源点知晓要放慢
- 时间超过: 路由器收到生存时间>0, 丢弃且向源点发超时报文; 终点再预先规定时间不能收到全部数据报片, 将已收到都丢弃, 向源点发送超时报文
- 参数问题: 路由器/目标主机收到数据报首部有的字段值错误, 丢弃并向源点发送
- 改变路由(重定向): 发给主机使其知道下次发给另外路由器
-
ICMP差错报告报文
- 收到要差错报告的IP数据报首部+数据字段前8字节(得到端口号&序号)+差错报告报文前8字节
-
ICMP差错报告报文, 有四不发
- ICMP差错报告报文的ICMP不发
- 首个分片数据报片所有后续数据报片不发
- 多播地址数据报不发
- 特殊地址不发
-
常用ICMP
- 回送请求&回答: 主机/路由器向特定主机询问, 收到后给源主机/路由器发ICMP回送回答报文, 用于测试是否可达和获取状态
- 时间戳请求&回答: 请某主机/路由器回答当前日期&时间, 32b, 1900/1/1->当前, 用于时钟同步,测量时间
4.3.2. ICMP应用
- ping: 使用ICMP回送请求,回送回答报文, 不通过TCP/UDP
- traceroute(unix)/tracert(win): 获取到目标主机路由信息
4.4. 路由选择协议
4.4.1.基本概念
1. 理想的路由算法:
1. 算法正确和完整: 沿各路由表指引的路由, 分组一定能到目的网络&主机
2. 算法计算简单: 通信开销小
3. 自适应性: 适应通信量&网络拓扑变化, 可均衡负载, 改变路由
4. 稳定性: 通信量&拓扑稳定时, 收敛于可接受的解
5. 公平: 对所有用户平等
6. 最佳: 能找到最好路由, 时延最小, 吞吐量最大
2. 分层次路由选择协议
1. 内部网关协议IGP: 自治系统内部使用路由选择协议, 与其他系统无关, 如RIP, OSPF协议
2. 外部网关协议EGP: 源主机&目的主机在不同自治系统, 到边界时需要和传递, 如BGP-4
3.
4.4.2. 内部网关协议RIP
- RIP (Routing Information Protocol) 路由信息协议, 内部网关协议IGP中最先广泛使用, 分布式的基于距离向量的路由选择协议, 使得每个路由器到每个目的网络路由最短; 使用UDP传送
- 距离: 跳数, 经过几跳到达终点
- 允许一条路径最多15个路由器, ==16不可达, 故RIP只适用于小型互联网
- 特点
- 仅和相邻路由器交换信息
- 交换本路由器的路由表
- 固定时间间隔交换路由表, 通过距离向量算法找出最短距离
- 实现简单,开销小
- 限制了网络规模,最大距离15,坏消息传播慢
- 距离向量算法: 对每个相邻路由器的RIP报文
- 对地址X的相邻路由器的RIP报文, 修改报文的所有项目(到目的网络N,距离d,下一跳路由器X), 下一跳字段地址改X, 所有距离+1
- 对修改后的RIP报文所有项目的操作
if 原路由表无目的网络N 添加项目到路由表 else if 下一跳路由器地址X 收到的项目替换原路由表项目 else if 收到项目距离d<路由表距离 更新
- RIP报文格式: 首部+路由, 最大长度4+20x25=504
- 首部: 4B, 命令字段指出报文意义, 1:请求路由信息, 2:请求路由信息响应/未被请求发出的路由更新报文, 必为0为了对齐
- 路由: 若干路由信息组成, 每个20B, 一个RIP最多25个路由
- 地址族标识符: 标志所用的地址协议, 2:IP地址
- 路由标记: 填入自治系统号ASN, 区分系统外路由
- 缺点: 网络故障时, 要长时间才能将信息传送到所有路由器
4.4.3 内部网关协议OSPF
- OSPF: 开发最短路径优先, 使用分布式的链路状态协议
- 向本系统所有路由器发信息(泛洪法,路由器通过所有端口向所有相邻路由器发信息, 每个相邻路由器再发往其他路由器, 除了刚才的, 最终所有路由器得到副本)
- 发送的信息:与本路由器相邻的所有路由器链路状态(本路由器和水相邻,度量(费用,距离,时延,带宽))
- 链路状态变化时向所有路由器泛红发送(RIP定期发送)
- 特点
- 所有路由器都能建立链路状态数据库(全网拓扑结构图), 每个路由器都知道全网多少路由器, 哪些相连
- 可以快速更新, 更新收敛快
- 允许管理员给每条路有指派不同代价: 对不同类型业务可计算出不同路由
- 负载均衡: 同一目的网络多条相同代价的路径, 可将通信量分配
- 鉴别能力, 保证仅通信可信赖路由器
- 支持可变长度子网划分, 无分类编址CIDR
- 每个链路带32位序号, 越大越新
- 区域: 为扩大规模, 一个自治系统划分多个更小范围, 每个区域一个32位标识符
- 限制泛洪法范围
- 层次结构的区域划分:
- 主干区域: 上层区域, 0.0.0.0,
- 区域边界路由器: 概括其他区域来的信息
- 主干区域: 在主干区域内的路由器
- 自治系统边界路由器: 主干区域内和其他自治系统交换路由信息
- 帧组成
- OSPF直接用IP数据报传送
- 版本: 2
- 类型: 五种类型分组
- 分组长度: OSPF首部在内的分组长度, 字节为单位
- 路由器标识符: 标志发送该分组路由器接口的IP
- 区域标识符: 分组属于的区域
- 检验和: 检测分组的差错
- 鉴别类型: 0:不用 1:口令
- 鉴别: 鉴别类型0则填0, 1则填8B口令
- 五种分组类型, 问候+四种同步分组
- 问候分组 Hello: 发现和维持邻站的可达性, 每10s交换一次
- 数据库描述分组 Database Description: 向邻站给出链路状态数据库的所有链路状态项目的摘要信息
- 链路状态请求 Link State Request: 相对方请求发送某些链路状态项目详细信息
- 链路状态更新 Link State Update: 泛洪法对全网更新链路状态
- 链路状态确认 Link State Acknowledgement: 确认链路更新分组
- 完全邻接: 两个同步的路由器
- 可靠的泛洪法
4.4.4. 外部网关协议BGP
- 考虑安全等原因, BGP要找到比较好的路由, 而不是最佳路由; 使用路径向量路由选择协议
- 配置BGP时每个自治系统管理员选择至少1路由器位BGP发言人(常为BGP边界路由器)
- BGP发言人与其他AS的BGP繁衍人交换路由信息, 先建立TCP连接(port:179), 交换BGP报文来建立会话, 利用会话交换路由信息(新增撤销差错)
- 邻站/对等站: 使用TCP连接交换路由信息的俩BGP发言人
- BGP发言人构造的自治系统连通图, 树状结构无回路
- BGP支持无分类域间路由选择CIDR
- 四种报文:
- OPEN 打开: 与相邻BGP建立关系, 初始化通信
- UPDATE 更新: 通告某一路由信息, 列出要撤销的多条路由
- KEEPALIVE 保活: 周期性证实邻站连通性, 19B, 30s
- NOTIFICATION 通知: 发送检测到的差错
- 帧格式: 通用首部19B, 标记16B+长度2B+类型1B
- OPEN报文
- 版本 1B, 4
- 本自治系统号 2B, 使用全球唯一的16位自治系统号
- 保持时间 2B, 以秒计算的保持为邻站关系的时间
- BGP标识符 4B, 路由器IP
- 可选参数长度 1B
- 可选参数
- UPDATE
- 不可行路由长度 2B, 指明下一个字段长
- 所有要撤销的路由
- 路径属性总长度 2B, 下一个字段长度
- 路径属性 定义该报文中增加的路径属性
- 网络层可达性信息NLRI
- KEEPALIVE: 只有通用部首
- NOTIFICATION:
- 差错代码 1B
- 差错子代码 1B
- 差错数据 诊断信息
- OPEN报文
4.4.5. 路由器构成
- 路由选择部分: 控制部分, 核心是选择处理机, 根据选定路由选择协议构造路由表, 定期交换维护路由表
- 分组转发部分:
4.5. IP多播
- IP多播
- 只在本局域网硬件多播
- 因特网范围多播
- 多播数据报目的地址写入多播组标识符(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阶段: 某主机加入新多播组, 向多播组的多播地址发送IGMP报文; 多播路由器接收后, 用多播路由选择协议将组成员关系转发给其他多播路由器
- 2阶段: 组成员关系是动态的, 多播路由器周期性探询本地主机是否还是组成员: 一个主机响应则组活跃, 几次都不响应则都离开
- 多播路由选择协议: 多播路由器要和因特网其他多播路由器协同工作
- 找出源主机为根节点的多播转发树
- 泛洪&剪除, 反向路径广播RPB
- 隧道技术 IP-in-IP
- 基于核心的发现技术
- 非标准, 建议使用的多播路由选择协议
- 距离向量多播路由选择协议DVMRP
- 基于核心的转发树CBT
- 开放最短通道优先的多播扩展MOSPF
- 协议无关多播-稀疏方式PIM-SM
- 协议无关多播-密集方式PIM-DM
- 找出源主机为根节点的多播转发树
4.6. 虚拟专用网VPN & 网络地址转换NAT
4.6.1. 虚拟专用网VPN
- 节省IP, 所有数据加密
- 专用地址: 只能用于一个机构内部通信, 所有路由器对目的地址为专用地址的数据报一律不转发
- 10.0.0.0 - 10.255.255.255 (10.0.0.0/8 24位块)
- 172.16.0.0 - 172.31.255.255 (172.16.0.0/12 20位块)
- 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层收到数据交付指明的应用
- 用户数据报协议UDP User Datagram Protocol: 传输前无需连接, 收到不用确认, 不提供可靠交付, 高效
- 传输控制协议TCP Transmission Control Protocol: 面向连接的服务, 必须先建立连接, 结束后释放连接, 不提供广播多播, 提供可靠的面向连接的传输, 开销大首部多占用处理, 有确认,流控,计时和连接管理
5.1.2. 端口
- 传送的报文交到目标主机某个合适的目的端口, 余下工作TCP完成
- 服务端用的端口号
- 熟知端口号/系统端口号 0~1023, 指派给TCP/IP最重要的应用
- 登记端口号, 1024~49151, 按IANA规定手续登记防重复
- 熟知端口号/系统端口号 0~1023, 指派给TCP/IP最重要的应用
- 客户端使用端口号(短暂端口号), 49152~65535, 客户端进程同意必须部分时动态选择
5.2. 用户数据报协议UDP
- 特点
- 无连接, 开销时延小
- 尽最大努力交付, 无需维持复杂的连接状态
- 面向报文, 一次交付完整的报文, 报文边界不合不拆
- 无拥塞机制, 拥塞降低速率
- 支持1v1, 1vn, nvn
- 首部开销小 8B, (TCP20B
- 首部格式
- 首部字段 8B
- 源端口, 需要回信使用, 不需要=0
- 目的端口, 终点交付使用; 接收方发现端口不正确丢弃, ICMP发端口不可达
- 长度, 用户数据报长度, min=8(仅首部)
- 检验和, 检测传输中是否有差错, 有错丢弃; 首部和数据一起检验, 非偶数填0
- 伪首部: 计算检验和时数据报前+12B伪首部(临时), 不向上向下传递
- 首部字段 8B
5.3. 传输控制协议TCP
- 特点
- 面向连接的传输层协议, 传前建立传后释放
- 仅1v1
- 可靠交付, 无差错,不丢失,不重复,按序到达
- 全双工通信, 双方有收发缓存
- 面向字节流, 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报文首部
- 首部
- 源端口: 2B
- 目的端口: 2B
- 序号: 4B, 溢出归0; 每个字节按顺序编号,(字段值301,数据100字节,则下一个序号400
- 确认号: 4B, 期望收到对方下一个报文段首个数据字节序号 (A发501 200, B确认报文段701
- 数据偏移: 4b, 数据起始处距离报文段起始处多远(即首部长度. 最长40B
- 保留: 6b, 0
- 紧急URG: 1b, =1时高优先级数据, 插到最前面
- 确认ACK: 1b, =1确认有效, =0确认号无效
- 推送PSH: 1b, 应用希望键入命令立即收到对方响应, 接收方尽快交付而不是等填满
- 复位RST: 1b TCP连接有严重差错, 必须释放连接重新建立; 拒绝非法报文段/拒绝打开
- 同步SYN: 1b 连接建立时同步序号, SYN=1,ACK=0时 此为连接请求报文段,若同意建立连接, 响应报文段中使SYN=1,ACK=1, SYN=1标识是连接请求/连接接受报文
- 终止FIN: 1b: 释放连接
- 窗口: 2B, 发送本段报文一方的接收窗口
- 检验和: 2B, 加伪首部求和
- 紧急指针: 2B, URG=1时有意义,指出紧急数据字节数, 窗口0也可发紧急数据
- 选项: 可变长, 最长40B
- 最大报文段长度MSS: 每个TCO报文段中数据字段最大长度
- 窗口扩大选项 3B
- 时间戳选项 10B
- 选择确认
5.4. TCP可靠传输
5.4.1. 字节为单位的滑动窗口
- A发送窗口根据B接收窗口设置, 但不一定等大; A可能根据拥塞情况减小窗口
- 不按序到达, 通常临时存放在接收窗口, 到达后再按序交付
- 接收方必须有累积确认, 减小传输开销
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拥塞控制
-
拥塞控制: 防止过多数据注入网络, 都不过载, 设计所有主机和路由器
-
拥塞控制方法
- 慢开始&拥塞避免: 发送方维持拥塞窗口, 使发送窗口=拥塞窗口, 只要未出现拥塞. 无拥塞增大,拥塞则减小
- 慢开始: 由小到大逐渐增大发送窗口,试探拥塞情况
- 拥塞避免: 拥塞窗口线性规律缓慢增长
4. - 快重传: 接收方每收到失序报文段就立即发出重复确认
- 快恢复
发送方窗口上限值 = Min [rwnd(接收方窗口), 拥塞窗口(cwnd)]
-
随机早期检测RED: 防止路由器尾部丢弃出现和恢复时, 许多TCP同一时间慢开始, 同一时间恢复使通信量大很多; 拥塞早期征兆时开始丢弃; THmax=2THmin
- 平均队列长度<最小门限THmin, 新到分组放入队列排队
- 平均队列长度>最大门限THmax, 新到分组丢弃
- THmin<平均队列长度<THmax, 按概率p丢弃
5.7.TCP运输连接管理
- 运输连接三阶段: 连接建立,数据传送,连接释放
- 目的
- 每一方知道对方存在
- 双方协商参数(最大窗口值,是否使用窗口扩大选项,时间戳,服务质量等)
- 对运输实体资源(缓存,连接表项目)分配
- 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字符
-
顶级域名分类
- 国家顶级域名nTLD: cn, us, uk
- 通用顶级域名gTLD: com, net, org, int, edu, gov, mil…
- 基础结构域名(反向域名), 只有一个arpa, 用于反向域名解析
-
域名服务器
- 根域名服务器: 最高层次最重要的域名服务器, 知道所有顶级域名服务器域名和ip, DNS客户向某个根域名服务器查询, 路由器能找到最近的根域名服务器
- 顶级域名服务器TLD: 管理该顶级域名服务器注册的所有二级域名
- 权限域名服务器: 负责一个区的域名服务器
- 本地域名服务器: 主机发出DNS查询请求时, 请求报文发给本地域名服务器
-
高速缓存: 存放最近查询过的域名和记录, 减轻负荷, 在本地域名服务器/主机内
-
域名解析过程
- 主机向域名服务器采用递归查询: 主机查询本地域名服务器不知道的ip, 本地域名服务器以DNS客户身份向其他根域名服务器发出查询请求报文
- 本地域名服务器向根域名服务器查询用迭代查询: 根域名服务器收到查询请求, 给出ip/告知下一步向谁查询,让本地域名服务器继续查询
6.2. 文件传送协议
6.2.1. FTP文件传送协议 File Transfer Protocol
-
FTP File Transfer Protocol: 提供交互式访问, 允许客户知名文件类型&格式,允许具有存储权限
- FTP提供文件传送的基本服务, 使用TCP, 客户-服务器模式
- 服务器进程: 主进程(接受新请求) + 从属进程(处理单个请求)
- 主进程工作步骤:
- 打开熟知端口21, 使客户端能连接
- 等待客户进程发出连接请求
- 启动从属进程处理客户进程的请求(处理完就终止,可能还有子进程)
- 回到等待状态, 继续接受其他客户进程请求
- 传输文件时建立并行TCP连接
- 控制连接 p21: 会话期间保持打开, 传送请求, 带外传送
- 数据连接 p20: 实际传输文件
-
网络文件系统NFS: 允许应用打开远地文件, 在特定位置上读写, 而不需要复制整个文件
6.2.3. 简单文件传送协议TFTP Trivial File Transfer Protocol
- 使用客户-服务器方式, 使用UDP, 熟知端口号69
- 优点:
- 可用于UDP环境, 需要程序/文件同时向多机器下载时使用
- TFTP代码占内存小, 小型计算机可用
- 特点
- 每次传送数据报文有512B数据, 最后一次可不足
- 数据报文按序编号, 1开始
- 支持ASCII码/二进制传送
- 可对文件读写
- 简单首部
- 发送一个文件块等待确认, 等不到重发, 接收方收不到也重发确认
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报文结构
- 请求报文: 客户->服务器发请求报文
- 开始行: 区分请求/响应
方法 意义 OPTION 请求一些选项的信息 GET 请求读取由URL标志的信息 HEAD 请求读取URL标志的信息的首部 POST 给服务器添加信息 PUT 指明的URL下存储一个文档 DELETE 删除指明的URL所标志的资源 TRACE 环回测试的请求报文 CONNECT 用于代理服务器 - 首部行: 说明浏览器,服务器,报文主体信息
- 实体主题: 请求无,响应也可能无
- 开始行: 区分请求/响应
- 响应报文: 服务器到客户的回答
- 状态行: HTTP版本,状态码,解释状态码
- 1xx:通知信息,请求收到/正在处理
- 2xx:成功
- 3xx:重定向, 要完成请求有进一步行动
- 4xx:客户差错, 请求中有错误的语法/不能完成
- 5xx:服务器的差错, 服务器失效无法完成请求
- 如 202 Accepted 400 Bad Request 404 Not Found
- 状态行: HTTP版本,状态码,解释状态码
- 请求报文: 客户->服务器发请求报文
-
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)
- 用户代理: 用户与电子邮件系统的接口, 是PC的程序(邮件客户端), 功能包括撰写,显示,处理,通信, 使用发邮件的SMTP协议和读邮件的POP3(都基于TCP)
-
简单邮件传送协议SMTP: 客户-服务器方式, 14命令21应答
- 连接建立, 不使用中间邮件服务器, 直接建立TCP
- 邮件传送: RCPT命令:弄清接收方系统做好接收邮件的准备
- 连接释放:
- 缺点
- 不能传可执行文件/二进制对象
- 限于传送7位ASCII码, 非英文文字不能发
- SMTP服务器拒绝超一定长度的邮件
- 某些实现未完全按照SMTP标准(回车换行,阶段,多余空格,tab)
-
用户代理从接收方邮件服务器赌气邮件使用的协议
- 邮局读取协议POP3: 客户-服务器工作, 用户一旦读取,POP服务器删除(可暂存)
- 网际报文存取协议IMAP: 客户-服务器方式工作, 客户对服务器远地打开, 邮件默认存在服务器
-
基于万维网的邮件
-
通用因特网邮件扩充MIME: 针对SMTP缺点
- 定义了5个新邮件首部字段, 可包含于原邮件首部, 提供了邮件主体的信息
- 定义了邮件内容的格式, 对多媒体电子邮件表示方法标准化
- 定义了传送编码, 可对任何内容格式转换, 不被改变
- 7位ASCII, 每行<1k字符, 不转换
- quoted-printable,适用于所传送数据仅有少量非ASCII码
- 任意二进制文件用base64编码
- 内容类型: 文本,图像,音频,视频,模型,应用,报文,多部份
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客户程序的请求
- 网络正常时统计,配置,测试; 网络故障时差错检测和恢复
- 委托代理: 提供协议转换和过滤操作,对被管对象进行管理
- 组成
- SNMP: 定义了管理站和代理之间交换的分组格式, 交换分组包含各代理的对象(变量)和状态(值), SNMP负责读取和改变数值
- 管理信息结构SMI: 定义了明明对象,定义对象类型的通用规则, 把对象和对象的值进行编码的规则
- 规定1.被管对象的明明2.存储被管对象的数据类型有哪些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
- 计算机网络