赞
踩
北邮国院大三电商在读,全文为PPT机翻+自己理解,仅做整体复习浏览知识点熟悉定义用,不做考前突击复习重点用。有任何问题可评论指出,有需要本文pdf/docx/md/Effiesheet格式的同学请私信联系/微信联系。祝您学习愉快。
ISP:Internet Service Provider 互联网服务提供商
Interconnected Internet Service Providers (ISPs)
互联互联网服务供应商(ISPs)
协议控制消息的发送和接收
协议定义了网络实体之间消息发送和接收的格式、顺序,以及在消息传输和接收时采取的操作
给了protocols的四个例子:
hosts: clients and servers
1 bit代表一个0或1
1 byte代表8个bit,表示0到255(或-128到127)
内存用byte表示,进率是1000不是1024
传输速率用bit表示,进率是1000不是1024
⬆️这个很重要
就是把很大的数据拆分成一个一个的小数据包,这个数据包就是packet,以数据包packet做单位来传输数据相对来说会快一些,而且,packet也可以检验错误。
Bandwidth: Measure of how much data we can send
packet的长度为L,transmission rate(也就是bandwidth)为R
L(bits)/R(bits/sec)有两个含义
Q:A packet of 1500B is transmitted by a network which has a bandwidth of 1Mb/s. How long does it take?
注意的点是:1500B是byte,不是bits,而bandwidth的单位是Mb/s,要进行单位换算
看到带B/b的题,第一时间要想到单位换算
A:1500B = 1500x8 bits = 12,000 bits
▪ 1Mb/s= 1,000,000 bits per second.
▪ Time = 12,000/1,000,000 sec
▪ = 0.012 sec
▪ = 12 ms
包交换:主机将应用层消息分解成包
存储和转发:整个数据包必须在下一个链路上传输之前到达路由器
【就是说明必须得先走完一个L/R,才能走下一个L/R】
Q:If we count only the “transmission” delay (the time taken to send packets) what is the delay from sending a 1500byte packet from source to destination?
很明显要分着计算两段的时间然后加起来,注意单位换算
A:1,500 bytes = 1,500x8 bits = 12,000 bits
▪ 1Mb/s is 1000000bits/sec
▪ From source to router L/R = 12000/1000000 secs= 0.012 seconds or 12 ms
▪ From router to dest = 12000/2000000 seconds= 0.006 seconds or 6 ms
▪ Total end-to-end delay = 12+6ms = 18ms
routing: determines source destination route taken by packets
路由:确定报文所经过的源目的路由
forwarding: move packets from router’s input to appropriate router output
转发:将数据包从路由器的输入移动到适当的路由器输出
【一个确定路线,一个移动】
【两张图意思是差不多的】
【大概了解一下,反正就是access net各自连不同的ISP,ISP之间有IXP进行交换】
【这四个delay的名字要背】
输出链路等待传输的时间
取决于路由器的拥塞级别
d_trans = L/R
L: packet length (bits)
R: link bandwidth (bps)
【包长除以带宽】
【物理连接长度除以传播速度】
四个delay如图所示:
【R,Rs,Rc哪个最小那个就是bottleneck,即限制整体速率的最低速度,因为整体的传输速率是一致的,哪个最低就按哪个走】
【layering的优点】
dealing with complex systems:
【不够具体,具体看下面的TCP/IP layer】
一共五层,从上到下依次是:
【不够具体,具体看下面的ISO/OSI layer】
一共七层,相比TCP/IP在application和transport中间多了两层:
背诵口诀:Please Do Not Throw Sausage + Pizza Away
每个单词首字母代表一个Layer层,从1到7
封装
【指的是在各个环节获得和失去header的过程】
【从上往下加header,从下往上删header】
【从上往下说,从Layer7开始】
【相对来说没那么重要,但是也看一下,其实都差不多】
先简单介绍一下Application Layer
【省流:你个人能在对设备上做的行为都被归于应用层,比如收发邮件】
【应用层协议的作用(定义了什么)】
再简单介绍一下Session and Presentation Layer
【看看就行,让你选什么行为在哪个Layer的时候大概知道就行,例题里只提到了粗体的两块,不过应该也就这两块,考不了别的】
下面进入Transport Layer部分
【注意进程和主机的区别】
【network layer将 “letter”,也就是message投递到他们家(host),然后transport layer才将每个letter给到对应的children(process),虽然说Transport layer给的定义是在不同主机间,但是实际完成不同主机间传递信息的是Network layer,负责主机内部投递的才是Transport layer】
多路传输/多路分解
Multiplexing (Mux):
Demultipliexing (Demux)
将主机间交付扩展到进程间交付,通过复用和分用实现。
复用:发送方传输层将套接字标识置于报文段中,交给网络层。
分用:接收方传输层根据报文段中的套接字标识,将报文段交付到正确的套接字。
很简单,直接看图:
【这四个很重要,这四个值定义了两个socket和他们的连接,整体叫做TCP socket(此处理解存疑,反正记住TCP socket是这四个值定义的就行)】
【补充:对于Connectionless demux和Connection-oriented demux这两者谁更好,谁效率更高是不一定的,需要看情况】
Q:为什么传到P4,P5,P6各自的socket的dest port都是80?
A:因为他们都是传到一个统一的中间socket(port:80),再由80这里Demux到P4,P5,P6的socket
UDP:用户数据报协议
Goal: detect “errors” (e.g., flipped bits – 0 becomes 1 or 1 becomes 0) in transmitted segment
目标:检测传输段中的“错误”(例如,翻转位- 0变为1或1变为0)
sender:
receiver:
首先发送方要计算checksum
- 将段的内容看作16bits的整数
- 校验和计算:计算所有整数的和,进位加到和的后面,将得到的值按位取反,得到校验和
- 发送方把checksum放入header的校验和字段里面
接着,当接收方收到后,验证的思路是
- 计算所收到的段的校验和
- 把它和校验和字段进行对比
- 不相等即发现了错误,相等并不代表一定没有错误
相等只代表我们没有检测出错误,但其实可能有错误,比如有2个位发生翻转的情况就检测不出来。
e.g.
UDP封装/解封装
【左图为我们提供的服务,右图为实际上左图的reliable channel的结构】
【注意箭头方向。udt_send()和rdt_rcv是双向的,剩下两个是单向的】
rdt_send:应用层将数据交付给可靠传输协议(rdt)以发送给对方
udt_send:被rdt调用,在不可靠的信道上向接收方传输数据
rdt_rcv:当数据包到达接收方信道时被调用
deliver_data:向上层应用交付数据rdt_send和deliver_data 是单向的,应用层发送和接收到的都是正确的
udt_send和rdt_rcv 是双向的,说明在不可靠的信道通道进行数据传输,需要双向的控制消息流动
【来源:可靠数据传输原理_blueheart丶的博客-CSDN博客】
有限状态机
Consider a coin operated turnstile – we put in a coin, it allows us in.
考虑一个投币式旋转门——我们投入硬币,它就允许我们进去。
It has two states “locked” “unlocked”.
它有两种状态“锁定”和“未锁定”。
It has two events “push” and “insert coin”
它有两个事件“推币”和“投币”
【一个类比,但是后面的图都是这样圆圈+箭头的形式,要明白这样的图代表什么意思】
【看懂这个图非常重要!!!!要了解每个箭头上的横线上面和下面各指什么】
Rdt1.0:通过可靠通道进行可靠传输
【绝对理想情况,即信道可靠不会丢失不会出错】
Rdt2.0:有误码的通道
We drop the assumption that the channel has no errors.
我们放弃信道没有错误的假设。
Now the channel could have bit errors.
现在信道可能有比特错误。
We need to be able to detect and recover from errors in transmission.
我们需要能够检测并从传输错误中恢复。
underlying channel may flip bits in packet
底层信道可以翻转包中的位
the question: how to recover from errors:
new mechanisms in rdt2.0 (beyond rdt1.0):
【红色sender上面那个倒的三角代表无任何动作,等待上层协议】
【先思考正常的rdt2.0过程,sender send pkt,然后receiver发现正确,给sender反馈ACK,然后sender收到ACK,知道没问题了,就上传。想明白了之后看图】
【先思考出现错误的rdt2.0过程,sender send pkt,然后receiver发现错误,给sender反馈NAK,sender收到NAK,知道有问题,重新发送pkt,直到发送了正确的pkt,sender收到ACK,知道没问题了,就上传。想明白了之后看图】
what happens if ACK/NAK corrupted?
如果ACK/NAK损坏了会发生什么?
handling duplicates:
处理重复:
stop and wait: sender sends one packet, then waits for receiver response
停止与等待:发送方发送一个报文,然后等待接收方响应
发送方获得来自上层的数据后,封包(编号为0)发送至接收方,接收方接收到分组后:
1、如果没有损坏,回送ACK分组,并等待编号为1的分组
2、如果损坏,回送NAK分组,并继续等待编号为0的分组发送方接收到回送分组后:
1、如果没有损坏,且为ACK分组,无任何动作,等待上层协议
2、如果没有损坏,且为NAK分组,重发编号为0的分组
3、如果损坏,无论是ACK还是NAK,重发编号为0的分组接收方收到分组后(接收方不知道自己的ACK或NAK分组在传输过程中是否损坏):
1、如果没有损坏,且为编号1的分组,回送ACK分组,且等待编号为0分组(循环)
2、如果没有损坏,且为编号0的分组,回送ACK分组,且等待编号为1分组
3、如果损坏,回送NAK分组,等待编号为0分组为什么会出现重复的分组?假如发送方无误的将分组0发送给了接收方,接收方也发送ACK分组准备接收分组1,但是ACK分组却在传输过程中损坏了,这会导致发送方重发分组0,而不是分组1。
【这个图是相较rdt2.0的图修改的部分】
rdt2.2与2.1的区别就在于去掉了NAK,而在ACK分组中显式指出分组编号:
发送方获得来自上层的数据后,封包(编号为0)发送至接收方,接收方接收到分组后:
1、如果没有损坏,回送ACK0分组,并等待编号为1的分组
2、如果损坏,回送ACK1分组,并继续等待编号为0的分组
发送方接收到回送分组后:
1、如果没有损坏,且为ACK0分组,无任何动作,等待上层协议
2、如果没有损坏,且为ACK1分组,重发编号为0的分组
3、如果损坏,无论是ACK1还是ACK0,重发编号为0的分组
接收方收到分组后(接收方不知道自己的ACK分组在传输过程中是否损坏):
1、如果没有损坏,且为编号1的分组,回送ACK1分组,且等待编号为0分组(循环)
2、如果没有损坏,且为编号0的分组,回送ACK0分组,且等待编号为1分组
3、如果损坏,回送ACK1分组,等待编号为0分组
在rdt2.2基础上加了个计时器
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。