《计算计网络自顶向下方法》前三章笔记

《计算机网络自顶向下方法》前三章笔记

第一章:计算机网络和因特网

端系统通过 通信链路分组交换机 连接到一起

分组 当一台端系统向另外一台端系统发送数据时,发送端系统将数据分段,并为每段加上首部字节,形成的信息包称为分组

分组交换机 用于转发接收的分组的设备(路由器和链路层交换机)

链路层交换机用于接入网中,路由器用于网络核心中

可以将因特网类比于货物运输:分组类似于卡车,通信链路类似于高速公路和公路,分组交换机类似于交叉口 ,而端系统类似于建筑物

ISP(因特网服务提供商):每个ISP自身就是由多台分组交换机和多段通信链路组成的网络

TCP/IP协议

  • TCP(Transmission Control Protocol)传输控制协议
  • IP(Internet Protocol)网络协议
端系统

端系统也被称为主机,可以容纳应用程序

如Web浏览器程序、Web服务器程序、电子邮件客户程序或者电子邮件服务器程序

端系统还可以进一步的分为两类:客户端和服务端

接入网

接入网是指端系统连接到边缘路由器(端系统到任何其他远程端系统路径上的第一台路由器)的网络

存储转发传输和转发时延

存储转发传输机制:交换机在传输整个分组的第一个比特之前,必须接收到整个分组

交换机要接收完整个分组后,才能转发这个分组

排队延时和分组丢失

排队延时

到达的分组需要传输到某条链路,但是链路用于传输其他分组,那么该到达的分组必须在输出缓存中等待,产生的时延取决于网络的阻塞程度

分组丢失

缓存空间有限,缓存空间已满,若还有分组到来,到来的分组将被丢弃或者排队的分组之一被丢弃

转发表和路由选择协议

每个端系统都有IP地址,当源主机向目的端系统发送一个分组时,源在该分组首部包含了目的地地IP地址。

路由器会检查这个IP地址,通过查找转发表(目的地址和输出链路之间的一种映射关系),选择该分组的输出链路

电路交换和分组交换

电路交换:在连接期间在网络链路上预留了带宽,发送方能够以恒定速率向接受方发送数据
在这里插入图片描述

电路交换的明显缺点是对于网络资源的利用率不高

例如:打电话的一个人停止讲话,空闲的网络资源(在沿该连接路由的链路中的频段或时隙)不能被其他进行中的连接所使

分组交换相较于电路交换

  • 有更好的带宽共享
  • 比电路更加简单、更有效、实现成本更低
分组交换中的时延

节点总时延=节点处理时延+排队时延+传输时延+传播时延

在这里插入图片描述

  • 节点处理时延(us或者更低)

    路由器检查分组首部,决定分组导向何处的时间

    检查比特级差错的时间等

  • 排队时延(ms到us级)

    分组在缓存中排队等待传输的时间

  • 传输时延(ms到us级)

    传输时延=L/R

    L:bit表示该分组的长度

    R :链路传输速率,单位为 bps=b/s

  • 传播时延(ms量级)

    传播时延=d/s

    distance:两个路由器之间距离

    speed:链路传播速率

传输时延和传播时延的区别

  • 传输时延:路由器将分组推出所需要的时间

    • 与分组长度、链路传输速率有关
    • 与两个路由器之间距离、链路传播速率无关
  • 传播时延:是将一个bit从一个路由器传输到另一个路由器所需要的时间

    • 与分组长度、链路传输速率无关
    • 与两个路由器之间距离、链路传播速率有关
排队时延

流量强度:La/R

a:分组到达队列的速率(pkt/s)

L:每个分组都是由L个比特位组成(bit)

La:每个比特位到达队列的速率

R:传输速率(bit/s=bps)

若流量强度>1,表示到达速率超过传输能力,排队将无限延伸
在这里插入图片描述

端到端时延

在这里插入图片描述

源和目的主机之间有N-1台路由器,并且忽略排队时延

端到端时延=N(处理时延+传输时延+传播时延)

端到端吞吐量

吞吐量:接收文件的速率

在实际网络中,吞吐量取决于 m i n R 1 , R 2 , R 3 . . . R N min{R_1,R_2,R_3...R_N} minR1,R2,R3...RN,最小吞吐量的链路称为瓶颈链路
在这里插入图片描述

通常网络核心中链路的传输速率很高,因特网中对吞吐量的限制因素通常是接入网

如果许多其他的数据流也通过这条链路流动,一条具有高传输速率的链路仍然可能成为文件传输的瓶颈链路

5层因特网协议栈

在这里插入图片描述

  • 应用层

    HTTP协议、SMTP协议、FTP(两个端系统之间的文件传送)协议、域名系统(DNS)

    报文 位于应用层的信息分组称为报文

  • 运输层

    • TCP

      1:提供面向连接的服务

      2:提供可靠传输

      3:流量控制(发送方和接收方速率匹配)

      4:拥塞控制机制(网络拥塞时,源抑制其传输速率)

    • UDP

      1:提供无连接服务

      2:提供不可靠传输

      3:无流量控制

      4:无拥塞控制

    将运输层的分组称为报文段

  • 网络层

    • 网络层包括网际协议IP,IP仅有一个,所有网络层的因特网组件需要运行IP
    • 网络层也包括决定路由的路由选择协议

    网络层数据分组称为数据报

  • 链路层

    • 链路层包括以太网、WIFI、电缆接入网的DOCSIS协议
    • 数据报从源到目的可能经过几个不同的链路:上一段数据报可能被链路层以太网和下一段链路上的WIFI处理

    链路层数据分组称为

  • 物理层

    物理层的任务就是将链路层中的帧中的一个一个bit从一个节点移动到下一个节点

    与实际传输媒体有关

七层OSI模型

应用层、表示层、会话层、运输层、网络层、数据链路层、物理层

表示层:让通信的应用程序能够解释交换数据的含义(数据压缩、数据加密、数据描述)

会话层:提供数据交换定界和同步功能

封装

在这里插入图片描述

在上图中,链路层交换机有链路层和物理层,只能实现链路层包含的协议(以太网、WIFI等)

而路由器拥有三层网络协议,包含网络层、链路层和物理层,能够实现(IP、路由选择协议和以太网、WIFI协议)

分组:首部字段+有效载荷字段

例如:从运输层传输到网络层的报文,网络层增加了源和目的端系统地址这样的网络层首部信息

计算机网络和因特网的历史

分组交换发展:1961-1972

20世纪60年代:电话网广泛应用,电路交换技术比较成熟

第一个分组交换计算机网络:ARPA-net

TCP、IP、UDP在20世纪70年代末在概念上就已经完成

20世纪90年代Web应用程序出现,互联网开始爆炸式的广泛传播

第二章:应用层

应用层包含两种体系结构:服务器-客户端结构和P2P结构

不同主机进程之间通信通过套接字来实现

识别其他主机上的进程:IP+端口号
在这里插入图片描述

TCP/UDP

TCP

  • 面向连接的服务
  • 可靠数据传输
  • 拥塞控制(当出现网络拥塞时,抑制源或者目的的发送速率)
  • 流量控制(控制接收方和发送端发送速率一致)

UDP

  • 提供差错检验功能(但无法修改差错)

  • 无连接服务

  • 不可靠数据传输

  • 无拥塞控制

  • 无流量控制

  • 应用层协议HTTP

HTTP

HTTP协议是一个无状态协议(不保存客户的任何信息)

非持续性连接和持续性连接

非持续性连接:在相同客户端和服务器之间,每个请求/响应是经过一个单独的TCP连接发送,每个TCP连接只传输一个请求报文和响应报文

持续性连接:在相同客户端和服务器之间,所有请求/响应是经过相同TCP连接;如果一个连接经过一定时间间隔仍然未被使用,HTTP服务器就会关闭连接

GET和POST方法的区别
  • Get参数通过URL传递,而Post通过表单提交信息
  • Get只能发送ASCII码,Post能发送更多的数据类型
  • Post用于修改和提交数据,Get一般用于搜索排序和筛选之类的操作
  • Post相较于Get方法更安全
Web缓存

在这里插入图片描述

条件GET方法

在Web代理服务器中,可以使用条件GET方法来请求初始服务器中资源,保证代理服务器中的资源是最新的

SMTP

电子邮件的三个组成部分:用户代理、邮件服务器和简单邮件传输协议

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Dw7y6t3u-1650637256061)(Markdown图片包/image-20220419180823453.png)]

  • 客户 SMTP (运行在发送邮件服务器主 机上)在 25 号端口建立一个到服务器 MTP (运行在接收邮件服务器主机上)的 TCP 连接
  • 如果服务器没有开机,客户会在稍后继续尝试连接
  • 建立连接成功后,SMTP 的客户和服务器在传输信息进行握手
  • 提供的可靠数据传输(TCP协议)传送邮件
  • SMTP协议是一个推操作

工作流程
在这里插入图片描述

DNS(Domain Name System)

IP地址和主机名之间的目录服务,主要作用是将用户提供的主机名解析为IP地址

DNS运行在UDP上,使用53号端口

工作详情:

在这里插入图片描述

分布式的DNS服务器

根服务器、顶级域DNS服务器、权威DNS服务器

DNS记录和报文

所有DNS都存储了资源记录,资源记录是一个包含了下列字段的4元组

( N a m e , V a l u e , T y p e , T T L ) (Name,Value,Type,TTL) Name,Value,Type,TTL

Name和Value取决于Type

  • Type=A:(relayl.bar.foo. com, 145. 37. 93. 126, A) 就是一条类型A记录

  • Type=NS:(foo com, dns. foo. com, NS) 就是一条类型为 NS 的记录

  • Type=CNAME:(foo. com, relay1.bar. foo. com, CNAME) ,

    Name:别名 Value:规范主机名

  • Type=MX:(foo.com, mail.bar.foo. com , MX)

    Name:别名 Value:邮件服务器规范主机名

P2P

参与一个特定文件分发的所有对等方集合称为一个洪流

追踪器 记录用户是否在洪流中,当一个对等方加入洪流中时,会向追踪器注册自己,并周期性通知追踪器其在洪流中

在任何给定的时间,每个对等方都将具有来自文件的块的子集

如何请求:比如一个名为Alice的对等方申请最稀缺的块(在其他邻居中最少的块),那么最少的块就能更更加迅速的重新分发

如何发送:Alice向以最高速率向她提供数据的邻居发送数据

视频流

视频存在在HTTP服务器作为一个普通文件,每个特定的文件都有一个URL

用户需要看视频时,客户与服务器之间建立一个TCP连接并发送GET请求

服务器以尽可能快的速率在HTTP响应报文中发送视频文件

字节被收集在客户端的应用缓存中,如果缓存中的字节数超过限制,程序就开始播放视频

流式视频应用程序周期性的从客户端缓存中抓取帧,同时缓存视频后面部分的帧

DASH

针对不同比特率版本,服务器提供一个URL和比特率,动态选取视频播放质量

CDN

视频缓存服务器

第三章:运输层

网络层IP网际协议

IP服务模型是尽力而为交付服务,在通信的之间交付报文段,但是不做任何保证

不能保证报文段的交付,不能保证报文段按序交付,不能保证报文段数据的完整性

端口号

端口号是一个16比特的数,0~1023范围端口号为周知端口号(HTTP协议端口、SMTP协议端口之类的)
在这里插入图片描述

运输层的多路复用和多路分解

多路分解:将运输层报文段中数据交付给正确的套接字,每台端系统有多个套接字接口

多路复用:从源主机中收集数据块,并为每个数据块封装上首部信息,生成报文段,将报文段传递到网络层

UDP面向无连接的多路分解和多路复用

主机上的每个套接字能够分配一个端口号,当报文到达主机时,运输层检查报文段中的目的端口号,并将其定向到相应的套接字

然后报文段中的数据通过套接字进入所连接的进程

通过二元组:源端口号、目的端口号

假设在主机A的一个进程的UDP端口为19157,主机B的一个进程的UDP端口号为46284

1:主机A的运输层先创建一个运输层报文段,包含:应用程序数据,源端口号、目的端口号和其他值

2:A运输层将得到的报文段传递给网络层,网络层将报文段封装到IP数据报中(增加主机B的IP地址)

3:网络层尽力的将报文段交付给主机

4:主机B检查网络层交付的报文段,检查报文段中的目的端口号46284,并将这个报文段交付给 端口46284所识别的套接字

源端口号的作用是:当主机B要发送报文段给主机A时,可以提取源端口号作为目的端口号
在这里插入图片描述

TCP面向连接的多路分解和多路复用

通过四元组:源IP地址、源端口号、目的IP地址、目的端口号

在这里插入图片描述

UDP
UDP适合的类型

即时传输:TCP为确保数据可靠传输,会出现连接创建时延,对于实时性的数据传输并不适用,UDP即发即传

无连接的(不可靠传输):在发送报文之前,发送发和接收方的运输层实体之间是没有握手的

无连接状态:UDP无需要维护连接状态,也不需要跟踪连接的参数

分组首部开销小:UDP相比于TCP有更小的首部开销

UDP报文段结构

每个字段有2两个字节,一个字段16位,首部总共有4个字节

目的端口号<1024:从客户端传到服务器

源端口号<1024:从服务器传到客户端

源端口为占用两个字节,0632:0000 0110 0011 0010=2+16+32+512+1024=1536+50=1586,源端口号

目的端口号占用两个字节,00 0D:00000000 00001101=13,服务器端口号

UDP长度占用两个字节,00 1C:00000000 0001 1100=16+8+4=28

数据部分长度:28-8=20字节

长度字段表示:首部+报文的字节总数

在这里插入图片描述

提供差错检验功能(但无法修改差错)

检验和+其他字节16bit和为1111111111111111,如果比特之一是0,就出现差错

检验和字段是:所有两个字节16bit和的反码(如果溢出,末尾加一,进行回卷)

可靠信道传输

可靠传输主要是依靠:差错检验(检验和)、丢包处理、接收方反馈(肯定确认ACK、否定确认NCK)、定时器机制、重传机制

流水线可靠数据传输

在这里插入图片描述
在这里插入图片描述

GBN

包3、4、5接收后仍然被丢弃,因为分组2丢失,回退4步后重新发送分组2、3、4、5

在这里插入图片描述

SR

单独重传,分组2丢失后,3、4、5接收到后不丢弃,收到分组2后一并确认

在这里插入图片描述

TCP
  • 可靠数据传输:能保证报文段正确地、按序的将数据发送给接收进程
  • 拥塞控制:力求每一个通过拥塞网络链路的连接平等的共享网路链路带宽
发送缓存和接收缓存

在这里插入图片描述

TCP报文段

TCP首部字节通常是20字节

在这里插入图片描述

TCP连接

SYN:同步序号,表示建立连接;TCP规定SYN=1时不能携带,但是要消耗一个序号

seq:序列号,表示将从这个字节起始开始传送数据,包括这个字节

ack:确认序号,表示响应

三次握手

1:确认客户端发送能力

  • 客户端TCP向服务器TCP发送一个特殊的TCP报文段,不包含应用层数据,设置SYN标志位为1,随机消耗一个序列号
  • 客户端随机选取一个初始序号(client_isn),将其放入到序号字段中

2:确认服务器的接收和发送能力

  • 服务器从数据报中提取TCP SYN报文段,为TCP连接分配TCP缓存和变量
  • 服务器发送允许连接的报文段,SYN设置为1;服务器收到报文并确认收到,设置ACK=client_isn+1
  • 服务器选取自己的初始序号放入到序号字段(server_isn)

3:确认客户端的接收能力,客户端可以发送数据

  • 在收到服务器的报文段后,客户给连接分配缓存和变量
  • 对服务器允许连接的报文进行确认,设置ACK=server_isn+1,序号字段=client_isn+1,SYN=0

在这里插入图片描述

TCP三次握手能改成两次握手吗?为什么?

  • 由TCP性质决定,TCP是可靠传输,需要接收方接收到的数据是完整、有序、无差错的;

    • 这是由TCP中的序号和确认号确定的:如果只是两个握手,客户端就不知道服务器的传送数据的起始序号server_seq,客户端在接收数据过程中容易出现丢包现象
    • 要确认双方的发送和接收能力:两次握手只检验了客户端的发送和服务器的接收和发送能力,但没有检验客户端的接收能力
  • 有可能会资源浪费情况

    假设客户端发送连接请求,但因为这个连接请求报文段延时过长,而没有收到确认;

    此时客户端又发送一次连接请求,这次连接被服务器收到确认后,就开始传输数据,传输完毕后,连接关闭;

    滞留的第一次请求连接的报文段随后达到服务器,服务器确认后,等待客户端发送数据,但此时客户端以传输完毕,造成资源浪费

四次挥手

在这里插入图片描述

TCP拥塞控制
  • 端到端拥塞控制:在这种拥塞控制方法中,由发送数据的端系统自己来判断是否拥塞,然后调整传输速率。

  • 网络辅助的拥塞控制:由网络中的路由器来告诉发送方,网络的拥塞情况。一般有两种方式:

    (1)路由器直接向发送端发送报文,告知网络拥塞情况;

    (2)路由器更改数据段中的某个标志,来提示网络中的拥塞情况,然后数据将这个标志携带到目的主机,再由目的主机根据这个标志,向发送端发送报文,告知拥塞情况(被包含在确认报文中);

TCP面临的三个问题

1:如何限制数据发送速率

拥塞窗口cwnd,当网络拥塞时,TCP将减小cwnd;网络畅通时,增大cwnd,来控制数据发送速率

2:如何检测网络中是否拥有拥塞
  • 若发送一条数据段后,成功接收到了接收方的确认报文,则可以认为网络没有拥塞;
  • 若发送出一条数据段后,在规定时间内没有收到确认报文(丢失或时延太大),则可以认为网络出现了拥塞;
  • 若连续收到接收方对同一条报文的三次冗余确认,则可以推测那条报文丢失,即发生了拥塞;
3:采用什么算法来调整速率

采用慢启动和拥塞避免算法

MSS:最大报文段长度

cwnd:拥塞窗口(发送但还没有确认的报文序号在这个区间)

RTT:往返时间,发送方发送一个报文,到接受到报文确认所经历的事件

ssthresh:慢启动阈值,慢启动阶段,若cwnd大小到达这个值,将转换到拥塞避免模式

慢启动

初始 cwnd=1MSS,报文段被确认后;以cwnd=2MSS发送报文段,报文段确认后,以cwnd=4MSS发送报文段…

慢启动结束条件:cwnd>ssthresh,结束慢启动模式,进入拥塞避免模式

拥塞避免

每个RTT对cwnd值增加一个MSS

每个ACK到达增加MSS/cwnd字节:比如MSS是1460字节,并且cwnd是14600字节,则在一个RTT发送10个报文段,每个到达的ACK增加1/10MSS,10个报文段确认后,拥塞窗口将增加一个MSS

拥塞避免结束条件:

1:出现超时器超时的丢包现象:设置ssthresh=cwnd/2,重置cwnd=1MSS,进入慢启动模式

2:检测到3个冗余ACK:ssthresh=cwnd/2;cwnd=ssthresh+3MSS,进入拥塞避免模式

TCP流量控制
提供一个速度匹配服务,即发送方的发送速率和接收方的应用程序读取速率相匹配

TCP通过维护一个接收窗口rwnd来进行流量控制,用来指示接收方还有多少可用的缓存空间

对于接收主机B:

  • rwnd:接收方还有多少可用的缓存空间

  • RcvBuffer:接收缓存大小

  • LastByteRead:主机B上的应用程序从缓存读出的数据流的最后一个字节编号

  • LastByteRcvd:从网络中到达的并且放入主机B接收缓存中数据流的最后一个字节编号

L a s t B y t e R c v d − L a s t B y t e R e a d < = R c v B u f f e r LastByteRcvd-LastByteRead<=RcvBuffer LastByteRcvdLastByteRead<=RcvBuffer

r w n d = R e v B u f f e r − [ L a s t B y t e R c v d − L a s t B y t e R e a d ] rwnd=Rev Buffer - [ LastByteRcvd - LastByteRead ] rwnd=RevBuffer[LastByteRcvdLastByteRead]

在这里插入图片描述

对于发送主机A:

  • LastByteSent:发送的最后一个字节编号
  • LastByteAcked:确认到的最后一个字节编号

L a s t B y t e S e n t − L a s t B y t e A c k e d LastByteSent - LastByteAcked LastByteSentLastByteAcked :主机发送到连接中但未被确认的数据量

L a s t B y t e S e n t − L a s t B y t e A c k e d < r w n d = R e v B u f f e r − [ L a s t B y t e R c v d − L a s t B y t e R e a d ] LastByteSent - LastByteAcked<rwnd=Rev Buffer - [ LastByteRcvd - LastByteRead] LastByteSentLastByteAcked<rwnd=RevBuffer[LastByteRcvdLastByteRead]

当主机B的接收窗口为0时,主机A继续发送只有一个字节数据的报文段,这些报文段将会被接收方确认最终缓存将开始清空,并且确认报文里将包含一个非0 的rwnd值

这是因为主机B缓存满后,无任何数据告知主机A

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值