[其他]计算机网络-自顶向下方法 学习笔记

Posted z354681250

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[其他]计算机网络-自顶向下方法 学习笔记相关的知识,希望对你有一定的参考价值。

计算机网络与因特网

Nobody no why, it just works!
by Qijd

一、发展史

  1. 分组交换 1961-1972
  2. 专用网络和网络互联
    开始产生TCP UDP等协议
  3. 网络的激增 1980-1990
  4. 因特网爆炸 29世纪90年代
    万维网应用出现

一以单计算机为中心的联机终端系统
二以通信子网为中心的主机互联
三计算机网络体系结构标准化

二、基本构成

  • core — edge — resourse
  • 资源子网与通信子网构成计算机网络

  • 端系统通过 因特网服务提供商 ISP(InternetServiceProvider)接入因特网

  • 端系统、分组交换机和其他因特网部件通过protocol进行信息的接收和发送

1 有线传输

  • 双绞线
  • 光纤
  • 同轴电缆

2 拓扑结构

  • 总线型
  • 环型
  • 星型

3 分类

传播方式

  • ppp 点到点
  • broadcast 广播

地域范围

  • LAN 局域网 以太网等
  • WAN广域网 跨越城市、国家
  • MAN城域网

4 性能指标

  • /bit per second即/bps
  • 带宽 bandwidch
  • 时延 delay
    • 传输时延 transmission 路由器将所有byte推向链路所需时间
    • 处理时延 process 检查分组首部、决定将分组到向何处所需时间(处理后,进入排队时延)
    • 传播时延 propagation 在链路上从A路由器传到B路由器的所需时间

时延宽带积 == 链路容量

5 交换方式

  • circuit switch 电路交换:独占带宽 有独立的建立、连接过程
  • packet switch 分组交换:共享带宽

其中,Internet采用的是分组交换

三、网络体系结构

1 协议

  • 语法 syntax
  • 语义 symanties
  • 时序 timings

由ISOC(Internet society)定制协议

2 层次化协议

layer model层次模型

  • TCP/IP参考模型
    应用层 application 应用程序及应用层协议存留 分组称为报文
    运输层 transmation 端到端的管理 分组称为报文段segment
    网络层 internet 寻址,将数据报从一台主机运输到另一台主机 分组称为数据报dataram
    数据链路层 datalink 将分组从一个结点移到另一个结点 分组称为帧
    物理层 physical 数据转化信号,将帧中的bit数据一个一个地移动到下一个结点

  • OSI/RM参考模型
    应用层
    表示层 解释交换数据的含义
    会话层 提供数据交换定界与同步
    运输层
    网络层
    链路层
    物理层

每一层协议向上一层的协议提供服务
他具有结构化概念化的优点。模块化使系统组件更新更为容易

3 TCP/IP协议族

TCP: Transmation Control Protocol
UDP: User Datagram Protocol
IP: Internet Protocol
DNS: Domain Name Server
ARP: Address Resulation Protocol

4 面向连接

  • TCP 可靠 面向连接 确保传递与流量控制
  • IP UDP 不可靠 非面向连接

应用层

一、HTTP(Hypertext Transmission Protocol)

  • 工作原理: 客户程序和服务程序通过交换http报文。http定义了web客户端和web服务端的请求与传送页面的方式。
  • 默认port 80
  • 是一个无状态协议,不保存客户任何信息
  • 交互过程:HTTP客户建立了一个与服务器的TCP链接,浏览器和服务器进程通过嵌套子接口访问TCP,客户向接口发送http请求,并接受响应;服务器通过接口接收请求并响应给客户。
  • 报文格式:

1 请求报文

GET  /page.html  HTTP/1.1 //方法字段、URL字段、HTTP版本字段
HOST:  bjfu.edu.cn  //指明主机
Connection: close //是否开启持续连接
User-agent: Mozilla/5.0 //用户代理,即浏览器类型
Accept-language: cn

第一行叫请求行,后继行叫首部行

2 响应报文

HTTP/1.1 200 OK //协议版本字段、状态码和相应信息
Connection: close //是否开启持续连接
Date: Fri, 01 July 2016 21:10:04 GMT //报文产生发送时间
Server: Apache/2.2.3 (CentOS)  //服务器类型
Last-Modified: Fri, 01 July 2016 21:10:04 GMT //对象创建或修改最后时间
Content-Length: 6821 //实体对象长度
Content-Type: text/html

一个初始状行,六个首部行

二、FTP(File Transfer Protocol)

  • 由两条TCP传输 一条控制链接port 21,一条Data链接 port 20
  • 客户建立FTP会话,FTP与客户端在21端口发起一个连接;FTP服务器接收到一个文件传输命令后,在数据连接上传送文件,然后关闭链接。
  • PORT模式 主动式 当被要求传输数据时,服务器向客户发送数据连接请求
  • PASV模式 被动式 当被要求传输数据时,客户向服务端发送数据连接请求

三、SMTP(Simple Mail Transfer Protocol)/POP3(Post office Protocol var3)

1 SMTP

  • 工作原理:用户代理把报文发送给邮件服务器,邮件服务器上的SMTP在发现报文后,创建一个运行在目标邮件服务器上的SMTP服务器的TCP连接,于是两个SMTP通过TCP收发报文。
  • SMTP主要是一个推协议
  • port 25
  • 报文包括:From To Subject

2 POP3

  • 工作原理:将邮件服务器上的报文拉倒本地PC
  • POP3是一个拉协议
  • port 110

base64编码

Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一

Quoted-Printable编码

Quoted-Printable也是MIME邮件中常用的编码方式之一。同Base64一样,它也将输入的字符串或数据编码成全是ASCII码的可打印字符串。

四、DNS(Domain Name System)

  • port 53
  • 工作原理:应用程序需要将主机名转换为IP地址,这时调用DNS客户端,并指明主机名。DNS接收后,向网络中发送一个DNS查询报文。最终用户主机接受一个DNS回答报文。
  • 递归查询或迭代查询

1 查询和回答报文格式相同

标识符2   标志2
问题数2   回答RR数2
权威RR数2 附加RR数2
问题    //包含正在查询的信息,名字与类型(A、MX等)
回答    //答复IP地址
权威
附加信息

前12个字节是首部区域(2代表2byte)
标识符唯一标志查询,用于匹配
标志0代表查询,1代表回答
权威1代表权威DNS服务器
附加数啊表示希望递归(查询)或递归可用(答复)

2 其他概念

FQDN: 全称域名 主机名+全路径
PQDN: 正式域名


传输层

一、传输层介绍

  • socket是传输层或链路层等,提供给应用层的API
  • 多路分解:主机接收到运输层报文段,需要定向到适当的套接字,从而交给所需进程。这个将报文段数据交付给正确套接字的过程叫多路分解
  • 多路复用:在从不同套接字中收集数据块并封装首部信息(便于分解),传递到网络层叫多路复用

二、UDP

1 报文格式

source port(2B)   |  destination port(2B)
total length(2B)  |  check sum(2B)
报文段(<=535B)

2 反码求和计算

  • 发送方对报文段中所有(3个)16bit字进行求和,最终结果进行反码运算。加法溢出位要放到最低位进行回卷。这成为校验和。

  • 接收方将四个16bit字进行求和(仍然回卷),如果不全为1,则出现差错。

  • 伪首部:
    32位源IP地址、32位目的IP地址、8位填充对齐、8位协议、16位UDP长度。通过伪首部的IP地址检验,UDP可以确认该数据报是不是发送给本机IP地址的;通过伪首部的协议字段检验,UDP可以确认IP有没有把不应该传给UDP而应该传给别的高层的数据报传给了UDP。

三、可靠协议

  • Check校验码:通过校验码判断包内容出错error时直接丢弃;
  • Ack回应:(ARQ协议)产生了lost丢包或error错包,通过双方Ack(或NAK)对方发来的信息进行确认解决;没有收到回应则等待;
  • Numbering编号机制:用来解决Ack无法定位到具体的包的情况;
  • Timer计时器(stop-wait协议):当丢包或错包发生时,双方都在等待Ack回应,导致deadlock死锁。于是通过计时器及时重传进行解决;并没有丢失的包被重传发生duplicate重包,通过编号机制来进行区分;

为了提高效率,产生了如下的分组发送方式:

  • 累计确认:(GBN协议)分组发送时,发送n来表明接收到序号n及以前的分组;不接受任何不需要的分组;
  • GoBackToN:出现超时时,发送方发送所有已发送但为确认的分组;
  • 滑动窗口:为了防止分组被覆盖,若序号字段为长度N bit,窗口分组大小要小于2^N -1

当窗口很大时,使用选择重传来提高效率

  • 选择重传:(RS)接收方接受所有的失序分组,接到谁确认谁,发送方根据超时选择重传;
  • 滑动窗口:此时,为了防止无法判断是新分组还是重传,窗口分组要小于等于序号字段的一半

  • 流量控制:发送方维护一个“接收窗口”变量,让对方了解自己还有多少可用缓存空间。

四、TCP

1 报文格式

     2 byte                     2 byte
Source Port No.           Destination Port No.
Sequence No.//序号
Acknowledge No.//确认号
THL  Resert U A P R S F   Advertised Window Size//接收窗口
Check Sum                 Urgent Pointer//紧急指针

THL:首部长度
Check Sum:采用二进制反码求和(UDP)
R:reset 复位
S:synchronous 同步
F:final 结束

2 握手挥手

三次握手:

C -----SYN----> S
C <--SYN ACK--- S  //C establish
C -----ACK----> S  //S establish

四次挥手:

C -----FIN----> S  //C FIN-WAIT I
C <----ACK----- S  //C FIN-WAIT II  
C <----FIN----- S  //S CLOSE-WAIT
C -----ACK----> S  //C TIME-WAIT  S LISTEN

3 超时计时器

EstimatedRTT:平均往返时间 α推荐0.125
DevRTT:偏差往返时间 β推荐0.25

  • EstimatedRTT = (1-α) * EstimatedRTT + α * SampleRTT
  • DevRTT = (1-β) * DevRTT + β * |SampleRTT - EstimatedRTT|
  • 超时间隔 = EstimatedRTT + 4 * DevRTT

4 拥塞控制

  • Slow Start:慢启动,一开始很少,MSS/RTT(发送量/时延) 呈指数增长(1,2,4,8);发生丢包重新慢启动;
  • 拥塞避免:指数增长到达阈值时,缓慢线性增长;
  • 快速重传:收到三个冗余ACK,则快速重传,不再等待计时器超时触发重传,而后进入拥塞避免

5 SWS(silly window syndrome)糊涂窗口综合征

在通过窗口流量控制的时候,双方发送小报文(小于MSS)的一种情况。

  • 发送端:发送MSS长度报文或至少接收方通告窗口一半的报文;使用Nagle算法,先发送第一个报文段,而后开始积累知道满足长度。
  • 接收端:接收方不通告一个比MSS小的窗口,或者达到接收方缓存大小的一半(这个就不管MSS了)的时候才通告。

6 其他特性

  • Keepalive:server端进行保活
  • Persistent:当被“window size原因”拒绝后,坚持重发
  • TIME WAIT:结束前时间等待,等待可能迟到的前文信息
  • MSS:Max Segment Size 最大首部数据长度 536~1460B
  • GBN+RS:在GBN的基础上,接收失序分组,但不做确认,只对需要分组进行ACK,发送方Go back to N重传所有分组

网络层

用于转发与路由选择,将数据报从一台主机送到另一台主机。

一、IPv4

1 传统分类

A 0*******.********.********.********   2^7个net-id  2^24个host-id
B 10******.********.********.********   2^14个net-id  2^16个host-id
C 110*****.********.********.********   2^21个net-id  2^8个host-id
D 1110****.********.********.********   Multicast Address组播地址
E 11110***.********.********.********   Reserve for Future保留
  • host-id全为0代表网络号,全为1是Broadcast Address广播地址
  • net-id全为0 Reserve保留

2 私有地址 Private Address

不能在公网使用的地址

A 10.0.0.0 ~ 10.255.255.255      10/8
B 172.16.0.0 ~ 172.31.255.255    172.16/12
C 192.168.0.0 ~ 192.168.255.255  192.168/16

当连入公网的时候,会通过NAT(Network Address Translation)转化成公有地址

  • NAT:公有私有一一对应(通常用于隐藏内部结构)
  • PAT:通过改变端口号来复用ip;缺点是每次都要拆开tcp,checksum费时费力,再查看端口号

3 掩码与CIDR(Classless Inter Domain Routing无类别域间路由选择)

  • 定义:连续的1与连续的0组成掩码,1的个数代表net-id长度;0个数代表host-id长度。ip&&mask == net-id网络号
  • 子网划分:(CIRD)在保证net-id不变的情况加,从host-id借几个bit作为submit-id,继而通过不同的掩码来得到不同的子网
  • VLSM:可变长子网掩码,来应对不同的需求

4 报文格式

4bit  |  4bit  |       8bit        |             16bit
ver   |   THL  |  Type of Service  |              ITL
         Identification            | |D|M| Fregment offset(13bit)
     TTL       |   Protocol Type   |          Check Sum
                     Source IP Address
                     Destination IP Address

THL:首部长度,用于确认数据报从哪里开始
TOS:目前未使用
ITL:数据报总长度
TTL:time to live,数据报过一个路由器,减少1
ProtocolType:上层服务协议 6-TCP 17-UDP
CheckSum:只校验首部不校验数据,2进制反码求和

D:为1标识不可分
M:为1表示后面还有后继分片
Identification:标识号
Fregment offset:偏移量

分片:

  • 一个链路帧能承载的最大数据量叫做MTU帧中最大数据单元,因此需要ip报文段分片传输
  • 当一个ip报文段被分成多个时,identification相同
  • 偏移量要按(字节/8)计算,标识插入的数据从原始的哪一个(字节/8)开始
  • 由于上一条,故分片字节一般是8的倍数

5 ICMP(Internet Control Message Protocol)

  • ping时用到此协议
  • 8字节首部

    type | code | checksum(2byte)
            op(4byte)
            data
    

二、路由

1 路由表组成

  • 网络号
  • 子网掩码
  • 下一跳 记录与该路由直接相连,当想要到达网络号的位置时,该走的对应的路由器的ip

2 RIP(Routing Information Protocol)

  • 路由选择更新信息在邻居之间通过RIP响应报文进行“rumour谣传”,约30秒一次
  • RIP—UDP(port520)—IP—Ethernet
  • 度量值是距离向量
  • 防环机制:当有邻居180秒没有响应,认为邻居死了,马上触发更新全网广播全网广播
  • AS(自治系统)内部算法

3 OSPF(Open Shortest Path Protocol)

  • 通过路由器之间互相的洪泛,来模拟出一张全网图,通过Dijkstra来计算最短路
  • OSPF—IP(port89)
  • 度量值是带宽
  • 每当一个路由器发生状态变化,会全网广播;即使不变化,也会周期性广播自己状态
  • AS内部算法
  • LS(链路状态)型

洪泛:要求源节点向所有邻居发送分组的副本
受控洪泛:每个节点维护一个已经收到的、复制的、转发的短地址和广播分组列表,接收到副本时候会判断一下

4 BGP(Broder Gateway Protocol)

  • BGP—TCP—IP
  • AS之间算法

5 IS-IS

  • 也许未来在IPv6时代会发挥作用
  • LS型

三、IPv6

1 IP地址

  • unicast 单播
    • 全球可聚合单播地址 2:: ~ 3FFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF
    • link-local链路本地 FF80::
    • site-local站点本地 FFC0::
  • multicast 组播
    • FF02::1 链路内所有节点机
    • FF02::2 链路内所有路由器
  • anycast 任意播

长128bit,前64位net-id,后64位host-id
通过“::“来进行0压缩,一串IPv6不能进行两次压缩
localback(localhost) ::1

2 报文格式

每行32bit
var | traffic class |    flow label 
    pay load        |next header| hop connect limiy
                  SrcIP
                  Dest IP

next header:上层协议
hop conncet limit: ttl同理

3 PIM组播

  • Dense mode:当用户密集时候,直接进行洪泛push,加入一定prune剪枝、graft嫁接
  • Sparse mode:当用户稀疏时候,找到RP(汇合点)进行单独pull

4 其他相关协议

ICMPv6

  • RS(port133)路由请求
  • RA(port134)路由应答
  • NS(port135)邻居请求 用来代替IPv4的ARP,寻找mac地址
  • NA(port136)邻居应答

DHCPv6

  • 路由器用来分配IPv6地址

MPLS

  • 在帧后面压入一个标签,直接写出目标地址,达到fast forwarding的目的(就不用打开IP首部来看dest ip了)

网络接口层

一、概念

  • 链路:从一个结点到相邻结点的一段物理线路,其中没有任何其他的交换结点
  • 数据链路:物理线路上添加上控制数据传输的协议的硬件和软件

1 数据链路层

  • 设备:
    • switch(交换机),每一个端口都是一个单独的Collision Domain(冲突域)。所有的二层设备(switch)都在一个Boardcast Domain(广播域)里面,路由器(三层设备)隔绝广播域
    • 网桥,类似交换机,但是只有两个端口连接两个单独的Collision Domain
  • 功能:帧封装、帧校验与同步
  • switch初始表若找不到目标mac,则全端口转发;switch可以self-learing,从source mac-address进行学习

2 物理层

  • 设备:hub(集线器,只处理01比特序列),由hub连接的都在一个collision domain中
  • 双绞线、光纤
  • 功能:将数字或模拟数据 转化为 数字或模拟信号,数据是消息实体,信号则是在链路中传输的
  • 物理层四大特性:
    • 机械特性:指明接口所用接线器的形状和尺寸、引线数目和排列、固定和锁定装置等等。
    • 电气特性:指明在接口电缆的各条线上出现的电压的范围。
    • 功能特性:指明某条线上出现的某一电平的电压表示何种意义。
    • 过程特性:指明对于不同功能的各种可能事件的出现顺序。

二、多路访问协议

1 PPP(Point to Point Protocol)

  • 用于同步但已接收方和单一发送方
  • 透明传输:可以正确传输任何bit字符,通过转移字符完成(?)

2 CSMA有碰撞检测的载波侦听多路访问

  • 属于多路访问协议“信道划分、随机接入、轮流协议”中的随机接入协议
  • 载波监听:LBT(listen before talk);如果本结点与其他结点同时说话,停止说话(在以太网中发送前等待51.2μs)
  • 二进制指数后退:当帧经历碰撞后,随机从[1~2^n-1]中选择一个K值,结点等待K * 512bit时间
  • 以太网争用期(冲突窗口):以太网端到端的往返时间2t,一般为51.2μs

三、循环冗余校验

  • 原理:发送方接收方协定一个生成多项式G,长r+1个字节;发送方发送一个数据长d+CRC码长r 的数据给接收方,并保证dr连接在一起可以被G模2整除(异位)。接收方判断是否能整除,整除即正确。
  • 示例:G=1001 d=101110 d XOR G = 011
    即r = 011 最终发送101110 011改接收方

四、以太网帧结构

Dest MAC(6B)| Src MAC(6B)|ProtocolType|  Data   |CRC(4B)

MAC地址世界唯一,用于在链路上指向下一节点
广播帧时,Dest MAC全为F

  • MTU:帧中最长长度字节 1500 = 1460 + 20(IP) + 20(TCP)
  • 以太网速率:10Mbps
  • 以太网的帧间隔时间:9.6μs = 96比特时间

五、ARP(Address Revolution Protocol)

地址解析协议,将目标IP地址对应的MAC地址解析出来。ARP协议直接封装在帧中

硬件类型2B 协议类型2B 硬件长度1B 协议长度1B OperationCode2B SrcMac6B SrcIP4B DestMac6B DestIP4B

硬件类型:以太
DestMAC:询问时全0占位;应答时正常填写

六、局域网模型

1 拓扑结构

  • 星型结构:便于管理;主机负担大
  • 总线型结构:线利用率高;同时只能两台交换
  • 环型结构:实时性好;结点故障导致瘫痪

2 决定局域网特性的技术

  1. 用于传输数据的传输介质。
  2. 用以连接各种设备的拓扑结构。
  3. 用以共享资源的介质访问控制方法(MAC)。

3 IEEE802局域网体系结构模型

用于局域网共享介质,所以分成两个子层

  • LLC:负责向其上层提供服务
  • MAC:数据帧的封装/卸装,帧的寻址和识别,帧的接收与发送,链路的管理,帧的差错控制等

七、数据编码格式

  • 数字数据的模拟信号编码:FSK/ASK/PSK『宽带数据的调制方式』
  • 数字数据的数字信号编码:Manchester Coding
  • 模拟数据的数字信号编码:PCM

以上是关于[其他]计算机网络-自顶向下方法 学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

[其他]计算机网络-自顶向下方法 学习笔记

计算机网络(自顶向下)学习笔记——应用层

4.6万字长文总结计算机网络 &&《计算机网络·自顶向下方法》学习笔记(1-6章)

计算机网络:自顶向下(Top-Down)学习笔记_1.1

计算机网络:自顶向下方法 第一章笔记

计算机网络自顶向下方法第六版笔记(第一章计算机网络和因特网)