视讯会议
如果要用一个URL的request上一个网站,到底会出现多少流量呢? 大概会有17个message
6个封包去寻找ip地址, domain name:会通过DNS获取IP地址
3次握手:建立链接
4:利用http去发起request,4个来回知道要获取什么资料
4个message进行取消TCP连接。
每个packet都是收进来,存储,查询路由表,然后转发出去。
存储深度
收的速率,与发的速率
路由表的深度/容量
Layer 2:根据Mac address转发
Layer3:根据ip转发
Layer4:根据UDP/TCP转发
Spanning-Tree:防止网络环路。如图中红色的部分,主动割断loopback路径。
将网络连接起来的设备:router,gateway。
网卡位置:MAC Address
主机位置:IP Address
Broadcast:通常只在同一个区域网段中传播,不可以穿过router,跨网段。
整个internet,相当于一个WAN
网络上的data,统称datagram
host --> Lan --> Router --> WAN --->Router --->Host
Internet动态的根据网络状况改变路由路径。每个datagram走那个路径不一定,随时在改变
Router:进来的datagram比较大,输出的比较小,因为Router对datagram有切片的功能。不同的网络对datagram上限值的限制不同,故router会把大的datagram切割成小的fragment。
把一个datagram切成多个frame:是指切割内容,每个片段都会有完整的封装header。切割后的小封包都有完整的header,可以独立的传送。先送的封包不一定先到达对方destination。同样,后送,不见得晚到达destination。一个封包也有可能因为在网络上走的路径过长,而被Router丢弃,TTL到期。
通常,LAN速率块,WAN速率慢,如果LAN传输给Router的速率,大于Router的处理能力,则会排队,当排队大大的超过处理能力,则可能会导致data会被丢弃。 Internet:best effort,不保证一定到达地方。 如果自己的data很重要,则自己想办法。如TCP。
网络上的Resource:如何cost effective的share? link:可以为无线,也可以为有线。
Switch/Router:Node
如何不同的host share link/node?复用。
Multiplexing:如何让多个入口,导向一个公共的出口
De-multiplexing:如何将一个入口,分散到不同的出口
频宽:frequency band
FDM:每个user比较慢,子band窄,但随时都可以用它独享的band
TDM:切割成不同的time-slot,不同的user用不同的time-slot,每个user使用所有的frequency band
TDM/FDM均存在一个问题,万一某一被分出去的frequency band/time-slot没有再用,闲置,别的user也无法使用,无法做到负载均衡。或有些通道很忙,有些通道很闲,也不可以share channel。
统计多工:使用link时,根据每个host送出的资料量来做multi-plexing,决定如何使用这些link。当流量不均匀时,则避免通路闲置的情形。
Flow:两台电脑之间所有的应用的流量/或者是两台电脑之间的某一应用的流量如skype
FIFO:公用一个FIFO qeue,如果大家都很忙,则可能会均分channel。
Round-Robin:轮留制。按照顺序使用,逐个frame使用。如果有一个flow传输的data较多,则给它多传输一点。
还可以兼顾QoS,比如Audio/Vedio等实时性较高的资料,一般会有较高的priority。
congestion时,则会丢弃frame。
Link:通过有线/无线将两个node连接到一点。
Internet上面,link很长,每一段走的方式(Wifi/LTE/有线),速度快慢可能都不同,通常会在target/initiator之间建立一个logical channel。application - application,logical channel对应的实际physical channel如何,并不确定。
资料在网络中逐个bit传送,0/1bit的表达方式在不同的链路上面不同,是电位,相位,波形等等。link上面的传输有时会容易受电磁波的干扰,导致错位。
如何减少错位:侦错纠错
bust-error:如打雷,一下子会导致好多bit的错误,此时纠错则比较困难。如果可以纠错,则纠正,万一无法处理,则会丢弃。
Congestion:router收到的信息正确,但没有能力丢不出去,input速率远远大于output速率,当超过buffer能力,则会被丢弃。称为lost
也可能每个link,router坏掉
message在网络中传输的过程,会导致delay
不同的信息,发送的顺序/路径不一定相同。out-of-order
3rd party eavesdrop:可能会被第三方篡改。router都是先把dada收起来,查表,再转发出去。既然是先收起来,就是data先存在记忆体里面,就有机会被促篡改。如果被篡改,如何能被检测出来?
篡改封包/窃听封包
比如:wifi,只要打开天线,就可以收到自由空间的许多信息,就看你有没有能力解读,里面可能会有很多账号密码等信息,因而最好加密传输。
Layered Structure,为了构建简单。
Protocol:双方通信格式一致,流程一致。
不同layer的沟通,跟不同电脑之间的peer to peer的沟通。不同software layer之间的communication
每个protocol有两个interface:peer-to-peer interface,用于不同对等实体之间的横向通信;service interface:纵向的同一实体内部不同layer之间的沟通。
TCP:如何在不可靠的网络中提供可靠的service,任重道远……
横向规格:流程(发送顺序),格式。
纵向规格:不同layer之间如何提供服务
UDP:不可靠的环境提供不可靠的服务:看起来什么都不用做,实现起来比较简单。
协议规格:Message的format是什么?
同样的规格,同一公司内部不同的人实现,或不同公司之间基于相同规格实现的产品,不见得可以互通。故需要Interoperable测试,
FTP/HTTP:需要可靠的服务,TCP
DNS:不需要长时间连线,用UDP协议。 URL-->IP的映射。一问一答,简单的快速服务。不需要建立连线,若建立连线,则最少需要三次握手。 万一一次询问失败,则再询问一次,……
TCP:怎么送,怎么出。下面的协议不用担心乱序的问题,由TCP负责。
每一层的protocol,都会加上自己的header。资料从application到下层,每一层都加自己的header。
internet送到对端,对端从下向上,每一层查看自己的header,解封包,一直到applicaiton layer,还原成原始的data。
同一个layer:与对端协商沟通的data就放在header里面,对方阅读对应位置设定的parameter。header记录这对端告诉我这个封包到底是怎么回事。
解封包,向上层发送时,则会把自己处理过的header拿掉。上一层不需要看下一层的header,每一层只看自己的header。
上一层交给下一层,与该层还原给上一层的内容完全对等。相同。
Physical layer:实体层。铜线,无线,光纤……
Data Link layer:如何将frame data丢给直接相连下一台连接的设备,如何往前送一步。
Network Layer:如何将packet送到对方。整个路线怎么送,传送的更远。哪个路线比较快,更加便宜
Transport Layer:有些资料,如档案,不能错一点, 而有些资料,如Audio/Vedio,可以容许少量错误。 可靠传输与不可靠传输。 UDP:best effort。 TCP:可靠传输 。
每一层,都是根据下一层提供的服务,提供给上一层,提供服务。
Network layer:进得去,但不见得出得去。不可靠服务。
TCP:为上层提供可靠的服务,但依赖于下层网络层的不可靠的环境。 TCP对端,要告诉发端,收到的情况,若发现异常,则激发重送。也可能先送的后到,后送的先到,收到的data是乱序的,TCP要想办法编号,收到的对端在check,重新排序。比如说:设定一个时间窗口,假如超时还未收到,就认为已经丢失,要求发送重传。
Host与Router之间经过一个switch,
Router:L3设备:看目标IP,选择路径。这种路径会随时动态变更,因为网络状况是动态的。根据目标IP地址转发
Switch:L2设备:处理资料时,不看IP layer的header,只看Layer2的header。header会有发端网卡MAC,收data的网卡MAC,根据目标MAC地址做转发。
AP:也是L2设备。只处理L2 header,不看IP
被一个设备,为了跟对端peer沟通,则会将沟通(建立链接)的信息放在自己的header里面。
Router/Switch:每个port都有网卡。都有自己的MAC?
一个设备究竟是第几层的设备,就看它可以处理到第几层的header。
物理层:原始的资料如何在link上传输?
除了实体link,还有coding。线路上,0/1bit如何表达呢?光的明暗?波形?高低电位?
每一个bit都有bit time,bit time越长,传输越慢。 receiver 如何根据波形判断是0/1?处理波形的distortion?发送/接收端,两边的速度必须一致。发送接收clock一致。 全部是1,究竟是几个1?同理,全部是0,究竟是几个0? HDB3码?全部高电位不可以,同样全部为低电位也不可以。一定要让data不停的上上下下的变化。 把clock存在data中,让接收端从dada中提取到clock进行解码。
不同的物理层材料,对应着不同的coding方法。每个host都有自己的clock,不同host之间的clock不一定完全同步,必须要将发送的clock藏在data中,让发端从data中提取clock。
MAC layer中添加的内容:DA/SA/Type封包里面的内容LLC/PAD会包含很多IP header/TCP header等很多内容,L2的尾巴FCS。
DataLinkLayer:如何将data(frame)用网络的MAC protocol传给直接相连的主机或设备(交换机/AP),而不是送给最远端的host
有什么难点?不同的设备,物理层编码方式不同。跟直接相连的对方的连接方式是什么?点对点?还是Multiple Access?共享相同的链路?不同设备间的0/1对应的高低电位定义是否相同?多人同时送data,链路冲突,怎么办?
随机发送,什么都不做,则平均成功率只有18%,为了提高成功率,常用以下两种协议,来决定如何使用共享的media
Ethernet:CSMA/CD
WIFI:CSMA/CA
每一层都有自己对等层的header。
L2设备:switch/AP/bridge
网络层:如何将packets,透过internet从source发到目的地。IP-IP
IP packets==》datagram
首先要处理的是Routing:如何选择路径。有快又慢,有远有近。有便宜有贵(DDN),路径是动态的。即使发生短线,干扰等不可靠因素,也会best effort送到对方。万一送不到,自己想办法,依靠上层,网络层不负责可靠传输。
Router与router之间会定时或不定时的互相交换胖边链接状态信息,或者是别的线路不定时或定时的把网络状态告诉router。
router之间交互信息,也叫protocol。routing protocol:为了动态选择路径而设计的protocol。
第一代路由协议:RIPv1:每30秒更新一次路由信息,中间的故障,不利于立即修复网络。
第二代路由协议:OSPF,最短路径优先/带宽优先。 最短:会有cost funciton,路径最短,还是带宽最宽?网路的任何变化,都会立即通知router,重新计算路径。
定期或不定期的更新路由信息,建立routing table
每个router都有routing table,当收到data时,首先查询routing table,来根据目的ip和routing table的信息决定要出那个port出去。
如何定期或不定期的更新routing table 的信息,维护routing table的状况?routing protocol,routing table是动态维护,动态变更的。同样的packet,不同的时刻从同样的port发到router,得到的路由路径不一定相同。
Router进来的多,出去的多,消化不良,当超过memory缓存的能力时,则会丢包。丢包策略?
Network layer:best effort,很努力,很聪明,但不可靠。掉了packet就掉了,不会负责处理,比如重传
Transport Layer:host-to-host,不同主机之间process的资料传送。
网络层不可靠:可能会绕路,也可能会因为错误被丢弃。
第四层到底要不要可靠传出,要看应用需求。
Transport Layer第四层一般只有host才有,中间的router/switch一般没有。
通常,两个process之间,一个peer同时与多个peer通信/连线,一个这样的会话,就称为一个session
presentation layer:format of data
application layer:不同的应用,软体
从transport layer以上的四层:只有host才有。
Router只到第三层
Switch/AP:只到第二层。
Internet protocol由谁来定义? IETF
Layer的观念,并不是一个非常严格的做法。在使用上,并不一定第n层一定要用第n-1层的信息,可以第2层直接利用第n-2/n-3层的信息,跨层。为了简单,将session/represention归于application layer。application也可以直接呼叫ip,或者mac layer(如果两台pc直接链接,不透过internet)。基于应用。 如果要通过internet链接到对方,则必须透过ip。
TCP/IP是为了处理网络上的各种断线/阻塞。
当两台host直接链接,不透过internet,可能就不需要tcp/ip协议。
Internet就相当于一个沙漏模型,上层的服务透过IP与下层的不同的网络链接。 中间只有一层,即IP(历史上还有IPX等众多厂商协议,不过均已经被IP替代)
上层的应用很多。
下层的网络很多种,有线/无线/光线/电缆/ATM/……
透过整个Internet,必须通过IP
应用不停的产生,就会产生不同的protocol,如IPV6
如果有新的protocol出来,也可以加在现有的架构上面。一个protocol,必须要有spec规格,至少有一个implementation,把protocol实际做出来,这样才可能有办法将新的protocol加到internet构架中来。。
不管是用那种方式实现的网络,评价网络性能标准:
频宽Bandwidth
速度越快,每个bit的时间宽度就会越窄。
速度越块,每个bit的时间宽度越窄,实现技术越难
排队:资料发送的先后顺序排队,queuing time
Transmission Time: data size/bandwidth
如果是小资料,则propagation time对性能的影响较重要
如果是大资料,则transmission time对性能的影响较为重要。
Delay 乘以 Bandwith:pipe的长度与pipte的宽度的乘积,即pipe的体积。 这个pipe可以放多少data在里面。
Bandwith:transmision time
latency:propogation time
bandwith重要还是latency重要,取决于我们的应用。
Jitter:latency的变化。variance in latency
塞满tube:目的是提高链路的利用率
在transfer时间之内,送了多少的资料量。
在发送停下来,等对方回应之前,送的资料越多越好,尽量达到delay x bandwidth的量。