所有报文格式在文章末尾

第一讲:互联网与接入网
    Internet组成与结构:设备角度:端系统,网络节点,通信链路(物理介质)。
                       协议角度:协议,RFC
                       路由角度:路由器,ISP
    因特网是为分布式应用提供通信服务的基础设施
    应用程序通过Socket API使用因特网提供的通信服务
    网络协议的3要素:语法(报文格式)、语义(报文含义)和时序(事件和动作的序列)

线缆调制解调器:频分复用        ADSL:提供上、下行不对称的传输带宽,上网、打电话互不干扰。 
    光纤、电缆、cable modem(线缆调制解调器)、CMTS(线缆调制解调器终端)构成接入网 
    光纤到家FTTH
    物理介质:导引性介质,非导引性介质
第二讲:交换与复用
    分组交换:主机将应用信息划分成分组
            不需要建立电路❖通信线路利用率高❖抗毁能力强❖采用尽力服务方式❖服务质量不保证
    频分复用FDM ,时分复用TDM
    P个分组经过N条链路的总耗时是多少?:(P +(N-1))* L/R
    排队,丢包:分组在对应链路的输出缓存中排队,等待被发送到链路上,产生排队延迟;若链路的输出缓存满,分组被丢弃,产生丢包
第三讲:分组交换网和TCP/IP模型
    延迟:
        传输延迟:将所有分组比特推向链路所需要的时间
        传播延迟:从链路这端到那端时延
        处理延迟:路由器处理报文
                    ❖检查比特错误
                    ❖确定输出链路
        排队延迟:排队时延
                    ❖在输出缓存等待传输
                    ❖时间长短取决于链路拥塞程度
        传输延迟❖微秒~毫秒, 低速链路上较大
        传播延迟❖几微秒~几百毫秒,长距离链路上较大
        处理延迟❖典型地为几个微秒或更低
        排队延迟❖取决于拥塞程度
        吞吐量与链路速率及链路上的负载有关
    模块化:
        易于处理复杂系统
            ❖显式的层次结构易于确定系统的各个部分及其相互关系
        模块化简化了系统的维护和升级
            ❖改变某层服务的实现对于其它层次是透明的
    TCP/IP五层模型:
        应用层:Message(消息)
        传输层:Segment(段)
        网络层:Packet(分组)
        链路层:Frame(帧)
        物理层:Bit(位)
第四讲:Web和电子邮件
    服务器Server:
        ❖一台总是在线的主机,运行着服务器程序
        ❖具有永久IP地址
        ❖使用主机集群或数据中心提高处理能力客户
    客户端Client:
        ❖需要时与服务器通信
        ❖可能间断地连在网络上
        ❖通常使用动态IP地址
        ❖不与其它客户机直接通信
    TCP service:
        提供:面向连接/可靠传输/流量控制/拥塞控制
        不提供: 实时性,最低带宽保证
    Web页面的组成:
        一个HTML文档+多个资源对象
            HTTP/1.0是非坚持型的
            HTTP/1.1是坚持型的,流水线的
    RTT (Round-Trip Time):
        一个小分组从客户发送到服务器再返回客户的时间
    Cookies: 保存“状态”
        服务器端:信息保存在服务器端,返回一个ID给客户
        客户端  :信息发回客户端,保存在cookie文件中,并随请求报文发送给服务器
    HTTP并行连接:
        与浏览器有关,chrome为6
    HTTP2.0:  
        管道化连接,在一次连接中同时处理多个事务
    HTTP3.0:
        使用UDP协议和前向纠错。
    前向纠错:
            信号在被送入传输信道之前预先按一定的算法进行编码处理,加入带有信号本身特征的冗码,
            在接收端按照相应算法对接收到的信号进行解码,从而找出在传输过程中产生的错误码并将其纠正的技术。
            前向纠错体现为校验和(checksum)
    电子邮件系统:
        用户代理
        邮件服务器
        简单邮件传输协议(SMTP):
            SMTP使用TCP作为传输层协议,服务器端口为25,报文只能包含简单ASCII文本(7位ASCII码)。
            SMTP把邮件和附件都放在一个报文中;而HTTP把每个对象封装到响应报文中
    多用途因特网邮件扩展协议MIME:
        Base64用来将一个二进制字节序列转换成由ASCII字符序列构成的文本。
    可以从服务器获取邮件的协议:
        POP
        IMOP
        HTTP
第五讲:DNS与P2P
    DNS是因特网的核心功能:
        ❖使用客户-服务器模式运行在端系统之间
        ❖利用传输层协议传输报文
        ❖使用者不是用户,而是应用程序
    负载分配:
        ❖允许1个主机名对应一组IP地址
        ❖将http请求在一群相同功能的web服务器之间分配
    为什么不使用集中式的DNS?
        1.单点失效
        2.流量集中
        3.响应时间长
        4.需要维护庞大的数据库
    顶级域:
        组织域
        国家域
        反向域
    DNS分层:
        根服务器:13个,根服务器知道所有顶级域服务器的IP地址
        顶级域(TLD)服务器:每个TLD服务器负责一个顶级域,知道其所有二级子域的域名服务器地址
        权威服务器:机构的DNS服务器
        ❖本地服务器:本地DNS服务器起着代理的作用
    域名解析-迭代查询:
        收到查询报文的服务器将下一个需要查询的服务器地址返回给查询者
    域名解析—递归查询:
        如果所询问域名服务器不知道被查询的域名的IP地址,那么服务器就以DNS客户的身份,向其它域名服务器替主机继续查询
    DNS:存储资源记录(RR)的分布式数据库
        存储格式:(name, type, value, ttl, class)
    Cname:规范名字
    DNS可以使用UDP,也可以使用TCP,服务器的熟知端口都是53。
        ❖当响应报文的长度小于512字节时,使用UDP。
        ❖当响应报文的长度超过512字节时,使用TCP。
        ❖当解析器事先不知道响应报文的长度时,先使用UDP,若响应报文的长度超过512字节,
          服务器截断这个报文,置DNS报文首部的TC标志为1;解析程序打开TCP连接,并重复这个请求,以便得到完整的响应
    P2P:
        Tracker服务器:跟踪洪流中的对等方
        Torrent(洪流):参与一个特定文件分发的对等方集合
        对等方加入洪流:
            •向跟踪器注册,获得一个对等方列表
            •尝试向列表中的对等方建立TCP连接
第七讲:传输层与UDP协议
    网络层:
        提供主机之间的通信:IP地址
        尽力而为,不提供可靠传输
    传输层:、
        提供应用进程之间的通信:端口号
        TCP负责可靠传输
    多路复用与多路分解:通过套接字实现
    套接字:
        UDP套接字:(IP地址,端口号)
        TCP套接字:(源IP地址,源端口号,目的IP地址,目的端口号)
        客户端通常为套接字‘自动分配’端口号
        服务器通常采用‘固定’端口号
    网络层IP:提供尽力而为的服务
        尽最大努力将数据包交付到目的主机
        不保证正确和顺序
        不保证带宽及延迟
    传输层UDP提供的服务:
        多路复用和多路分解
        检测报文错误(但不尝试恢复)
    传输层UDP不提供的服务:
        正确交付
        按顺序交付
        延迟及带宽保证
    校验和:
        伪报头是从IP数据报而来。
        发送方:
            将报文看成是由16比特整数组成的序列
            对这些整数序列计算检查和并取反码,进位回卷
            将检查和放到UDP报文的checksum字段
        接收方:
            对收到的报文计算检查和
            与报文中的checksum字段进行比较
    UDP的应用:
        流媒体(容忍丢包,延迟敏感)
        DNS
        SNMP(简单网络管理协议)
    若要UDP实现可靠传输,可以在应用层实现。
第八讲:可靠数据传输
    常见错误:丢失、损坏、乱序、重复
    rdt:可靠数据传输协议
        rdt_send():
            由上层实体调用,将要发送的数据传给rdt
        udt_send():
            由rdt调用,将要发送的报文交给下层协议实体
        deliver_data():
            由rdt调用,将数据交付给上层实体
        deliver_data():
            由rdt调用,将数据交付给上层实体
    rdt各版本:
        Rdt1.0: 可靠信道上的可靠传输
            下层信道是完全可靠的(理想情况):
                报文不会丢失
                报文不会出错
            发送方和接收方使用不同的FSM:
                发送方:从上层接收数据,封装成报文送入下层信道
                接收方:从下层信道接收报文,取出数据交给上层
        Rdt2.0: 可能产生比特差错的下层信道 (不考虑乱序,重复)
            rdt2.0中引入的机制包括:
                差错检测:比如检错码(如checksum)
                接收方反馈:比如ACK和NAK(假设ACK和NAK不会出错)
                重传:发送方重传出错的报文
                2.0没有解决的问题:
                    如果ACK或者NAK出问题怎么办?引入协议状态。
        Rdt2.1:
            引入协议状态0,1来解决ACK或者NAK出问题情况。
            具体工作过程可以参考:
            https://blog.csdn.net/qq_35405411/article/details/70145945
        Rdt2.2:
            只使用ACK,去掉NAK,显式携带确认报文序号。
            具体工作过程可以参考:
            https://blog.csdn.net/qq_35405411/article/details/70145945
            如果信道丢包则协议无法正常工作?
        Rdt3.0:
            解决可能产生的比特错误和丢包问题
            检测丢包:
                若发送方在“合理的”时间内未收到ACK,认为丢包(需要定时器)
                从丢包中恢复:
                    发送方重发当前报文
                    接收方使用报文序号检测重复报文
    流水线:   
        Go-Back-N(回退N帧):
            发送窗口
            Ack报文携带所确认的报文的序号
            累积确认
            若发送方收到ACK q,转动发送窗口,使基序号= q+1
            发送方只对基序号报文使用1个定时器
            超时:发送方重传发送窗口中从基序号开始的所有报文
            发送方:
                收到上层的发送请求:
                    若发送窗口满:拒绝请求
                    若发送窗口不满:构造报文,发送
                    若原来发送窗口为空:对基序号启动一个定时器
                收到正确的ACK:
                    更新基序号(滑动窗口+1)
                    若发送窗口空:终止定时器
                    若发送窗口不空:对基序号启动一个定时器
                收到出错的ACK:
                    不做处理
                定时器超时:
                    启动定时器,重发从基序号开始的所有报文
        选择重传(SR):
            要点:
                发送方仅重传未收到ACK的报文,以避免不必要的重传
            为此:
                接收方需缓存失序的报文,以便接序交付给上层
                接收方需单独确认每个正确收到的报文(选择确认)
                每个已发送的报文需要1个定时器,以便单独重发
            sender:
                ◆从上层接收数据:
                    若发送窗口未满,发送报文,启动定时器
                ◆定时器n 超时:
                    重传报文n, 重启定时器
                ◆收到发送窗口内的ACK(n) :
                    标记报文n为已接收
                    若n=基序号,滑动发送窗口,使基序号=最小未确认的序号
            Receiver:
                ◆收到接收窗口[rcvbase, rcvbase+N-1]的报文n:
                    发送ACK(n)
                    若失序:缓存该报文
                    若n=基序号:交付从n开始的若干连续报文;滑动接收窗口,使基序号=下一个期待接收的序号
                ◆收到接收窗口[rcvbase-N,rcvbase-1]的报文
                    发送ACK(n)receiver
        选择重传问题:接收方误将重发的报文当作新报文
            发送窗口<=2^(n-1)(设序号空间N = 2^n)
第九讲:TCP协议
    性质: 
        面向连接
        全双工
        可靠传输
        面向字节流
    MSS:最大报文段长度
        通常情况,MSS = MTU –40B
    MTU:最大传输单元,即最大链路层帧长度,通常情况下,以太网MTU为1500B
    TCP报文结构可参考:https://zhangbinalan.gitbooks.io/protocol/content/tcpbao_wen_ge_shi.html     
    报文可选项:
        最大段长度(MSS):
            TCP段中可以携带的最大数据字节数
            建立连接时,每个主机可声明自己能够接受的MSS,缺省为536字节
        窗口比例因子(window scale):
            建立连接时,双方可以协商一个窗口比例因子用于扩大接收窗口
            window scale (WS)取值:0 ~14,表示实际窗口大小为16bits + WS bits,故实际接收窗口容量= window size * 2^WS
        选择确认(SACK):
            最初的TCP协议只使用累积确认
            改进的TCP协议引入选择确认
    序号:
        报文中第一个数据字节的序号
    确认号:
        使用累积确认,指出期望从对方接收的下一个字节的序号
    接收方如何处理失序的报文?
        TCP规范未涉及,留给实现者考虑
        一般来说有两种情况:立刻丢弃或者缓存失序报文段,并等待后续的报文。
    确认号与序号:
        主机A发出的报文中,seq代表的是数据部分第一个字节在A的发送缓存区中的编号
        ACK代表的是A期望收到的下一个报文段的数据部分第一个字节在B的发送缓存区中的编号。
        同一个TCP报文中的seq和ACK的值是没有联系的。在B发给A的确认报文中,seq的值应和A发向B的报文中的ACK的相同
    RTT估算:
        EstimatedRTT=(1-α)*EstimatedRTT+α*SampleRTT
        指数加权移动平均
        典型值: α=0.125
        SampleRTT与EstimatedRTT的偏差估计:
            DevRTT=(1-β)*DevRTT+β*|SampleRTT-EstimatedRTT|
                (typically, β= 0.25)
        TimeoutInterval = EstimatedRTT + 4*DevRTT
    Karn算法:
        忽略有二义性的确认,只对发送成功的报文测量SampleRTT,并据此更新EstimatedRTT。
        当发生报文重传时,停止测量SampleRTT ,采用定时器补偿策略:
                                                        发送方每重传一个报文,超时值就增大一倍。
        若连续发生超时事件,超时值呈指数增长(至一个规定的上限值)
    TCP协议在减少重传方面的设计:
        利用流水式发送和累积确认,可避免重发某些丢失了ACK的报文
        只使用一个重传定时器
    零窗口探测:
        接收窗口为0时,发送方必须停止发送。
        问题:
            接收方如何通告增大了的接收窗口?
        触发TCP发送数据的条件:
            应用程序调用
            超时
            收到非0通告的ACK
        发送方收到零窗口通告时,启动一个坚持定时器
        坚持定时器超时后,发送方发送一个探测报文
        接收方在响应的报文中通告当前接收窗口的大小
        若发送方仍收到零窗口通告,则发送方先将坚持定时器定时长度加倍,然后重新启动坚持定时器,阈值通常为60S
    三次握手连接:
        Step 1:
            客户TCP发送SYN报文(SYN=1,ACK=0)
            给出客户选择的起始序号
            不包含数据
        Step 2:
            服务器TCP用SYN&ACK报文响应(SYN=1, ACK=1)
            给出服务器选择的起始序号
            确认客户的起始序号
            不包含数据(服务器端分配缓存和变量)
        Step 3:
            客户用ACK报文响应(SYN=0,ACK=1)
            确认服务器的起始序号
            可能包含数据(客户端分配缓存和变量)
    四次挥手断开连接
    SYN洪泛攻击
第十讲:TCP拥塞控制
    流量控制:
        限制发送速度,使不超过接收方的处理能力
    拥塞控制:
        限制发送速度,使不超过网络的处理能力
    路由器缓冲区溢出→丢包
    路由器缓冲区中排队→长时延
    拥塞控制一般方法:
        1.路由器为端系统提供反馈(一个bit位指示拥塞)
        2.从端系统观察到的时延和丢失现象推断出拥塞
    TCP采用第二种方法:通过调整拥塞窗口cwnd的大小实现拥塞控制,发送方自己感知网络拥塞程度,然后降低其发送速度
    具体措施:
        慢启动(指数增):
            每收到1个ACK,cwnd增加1个MSS
            每经过1个RTT,cwnd翻倍
        拥塞避免(加性增):
            当慢启动持续一定时间使得cwnd达到一个设定的阈值(ssthresh)时进入拥塞避免阶段
                每收到1个ACK:cwnd增加MSS*(MSS/cwnd)字节
                每经过1个RTT:cwnd增加1个MSS(线性增加)
        超时(乘性减):
            快速重传和快速恢复:
                1.收到3个重复ACK:
                    ssthresh=cwnd/2(但不少于2个MSS)
                    cwnd=cwnd/2+3*MSS(快速恢复)
                    重传丢失的报文(快速重传)
                2.收到重复ACK: 
                    cwnd=cwnd+MSS
                    如果允许的话,发送新的报文
                3. 收到新的ACK:
                    cwnd=ssthresh
                    转入拥塞避免
                4.超时:
                    重传丢失的报文
                    ssthresh=cwnd/2
                    cwnd=1
                    转入慢启动状态
        TCP实现:
            超时:
                •ssthresh=cwnd/2
                •cwnd= 1MSS(发送速率降至最低)
                •进入慢启动
            收到3个冗余ACK:
                •ssthresh=cwnd/2
                •cwnd=cwnd/2+3(保持适中的发送速率)
                •进入拥塞避免
第十一讲:路由器和IP协议
    网络层功能:转发,路由
    转发:
        最长前缀匹配原则
        路由器内部三类交换结构:
            总线式,内存式,总线交叉式
    排队:
        导致延迟;如果缓冲区满,报文被丢弃
        丢弃策略(尾部丢弃)
    调度:
        选择缓冲区中的某个报文进行发送
        FIFO/PQ/WFQ
    输入端口排队与丢报文:
        当交换结构不能及时将输入端口的报文转移到输出端口时,输入端口处形成排队
    输出端口排队与丢报文:
        当多个输入端口同时向一个输出端口发送时,形成排队
    丢报文策略:
        丢弃尾部报文
        主动队列管理:在队列满之前就开始丢弃报文
    调度策略:
        FIFO (first in first out)
        priority queuing(优先级排队)
        Round Robin (时间片轮转)
        Weighted Fair Queuing (权重公平队列)
    IP报文格式参考http://c.biancheng.net/view/6411.html
    服务类型ToS字段:
        首三位:有限级设置
        中四位:
            服务类型:
                ◼时延Delay:为1最小
                ◼吞吐量Throughput:为1最大
                ◼可靠性Reliability:为1最好
                ◼开销Cost:为1最小
        后1位:未使用,必须为0
    选项字段:  
        最多40字节
        主要用于网络测试,例如:
            松散源路由:IP报文必须经过选项中指定的路由器,但还可以经过其它路由器。
            严格源路由:IP报文必须严格按照规定的路由进行转发
            记录路由:IP报文离开路由时记录下路由器出口地址
    分片与重组:
        在目的主机进行分片重组
        将原始IP报头加到每一个数据分片的前面,修改IP报头中的以下字段:
            总长度=报头长度+数据分片长度
            最后1个IP报头的MF位置0,其余IP报头的MF位置1
            分片偏移量=分片在原始IP报文数据中的字节序号/8
            重新计算IP报头检查和
        MF代表是否分段完,为1代表未完,为0代表是最后一段
第十二讲:IPV4
    地址32位
    分为网络端和主机端
    A类:
        网络段8位
        0.0.0.0~127.255.255.255
        0.和10.和127.三块A类网络不参与分配,其中10.x.y.z为私有IP地址
    B类:
        网络段16位
        128.0.0.0~191.255.255.255
        其中172.16~172.31共16块地址为私有IP地址
    C类:
        网络段24位
        192.0.0.0~223.255.255.255
        192.168.0~192.168.255为私有地址
    D类:组播地址
    E类:暂时未使用
    DHCP:动态分配IP地址(子网掩码)
    255.255.255.255:受限广播
    网络.255:直接广播
    主机号进一步划分成子网号和主机号两部分:
        子网号标识网络内的一个子网,主机号标识子网中的一个网络接口
        子网掩码表示主机号与子网号边界
    直接交付:
        IP报文的目的地址与路由器的某一端口地址在同一个子网中
    间接交付:
        IP报文的目的地址不与路由器中的任何一个端口地址在同一个子网中
    转发表中的转发表项通常至少有3种类型:
        特定主机路由:目的地址是一个主机地址
        网络前缀路由:目的地址是一个网络地址
        缺省路由:一个默认的路由器端口,不匹配其它转发表项的IP报文发送给该端口
    目的地址/掩码,下一跳,输出接口
    下一跳必须与输出接口在同一个子网中
    路由聚合:转发表中符合聚合条件的若干条路由可以合并成一条路由
        路由聚合过程也满足最长前缀匹配
    DHCP:一般安装在网关路由器中
        工作过程:
            主机广播“DHCP discover” 报文:寻找子网中的DHCP服务器
            DHCP服务器用“DHCP offer” 报文进行响应:给出推荐的IP地址及租期、其它配置信息
            主机用“DHCP request” 报文请求IP地址:主机选择一个DHCP服务器,向其请求IP地址
            DHCP服务器用“DHCP ack” 报文发送IP地址:响应客户的请求,确认所要求的参数
        DHCP服务器使用UDP端口67,客户使用UDP端口68
第十三讲:NAT与路由算法
    NAT:使用一个公用IP地址支持多个用户同时上网
    IPv6与IPv4不兼容,但与其它所有因特网协议都兼容
    IPV6:基本头部40字节,IP地址有128位
    区别:
        与分片相关的字段:IPv6路由器不负责分片
        基本头中增加流标签:支持对数据包区分处理
        没有总长度,只显示数据字段长度
    过渡双协议栈方案
    IPV6穿越IPV4网络:
        1.改报头:丢失信息
        2.建立隧道
    路由问题:
        全局,分布式,静态,动态。
    D-V路由算法:
        每个节点周期性地将它的距离矢量发送给邻居
        当节点x 从其邻居收到距离矢量后,使用Bellman-Ford方程更新自己的距离矢量
        好消息传播快,坏消息传播慢
            解决办法:
                水平分割:C通过B到达A,C就不告诉B到A的路由
                毒性逆转:C是从B学到关于A的路由(C通过B到达A),C就告诉B到A的路由为无穷大(实际值通常为16)
    链路状态路由算法(LS):
        每个节点利用可靠方法获得全网拓扑信息
        具体过程:
            发现邻居(有链路直接相连的节点)
            探测到每个邻居的代价
            构造链路状态(LS)报文
            向所有其他节点广播链路状态报文
            利用收到的LS报文构造网络拓扑,并计算到其它节点的最短路径
        Dijkstra路由算法:
            P(v):在当前从u到v的最短路径上,v的前一跳节点
第十四讲:互联网路由和ICMP
    同一个AS中的路由器运行Intra-AS路由协议
    在一个AS内直接连接到其它AS的路由器称为边界路由器
    边界路由器之间运行Inter-AS路由协议
    intra-AS协议也叫内部网关协议(IGP):
        RIP:
            采用距离矢量路由算法(DV)
            距离测度(代价)是跳数
            一条路径的最大代价限定为15跳
        OSPF :
            OSPF采用链路状态路由算法(LS)
            路由器周期性地、或在链路状态改变时发送OSPF链路通告
            链路代价:网络管理员可以进行配置
            两个路由层次:主干区域+非主干区域
            区域边界路由器
    inter-AS路由协议也称外部网关协议(EGP):
        BGP:
            eBGP(external BGP): 从相邻AS获得子网可达性信息
            iBGP(internal BGP): 向AS内部所有路由器传播可达性信息
            BGP选择的是AS-path最短的路径:热土豆
    ICMP:ICMP报文被封装在IP包中传输
        超时:报文的TTL减为0,或主机的重组定时器超时
        目的不可达:路由器判断一个报文不可能到达它的最终目的地
        重定向:路由器发现主机使用的路由有错或不是最佳路由
        源抑制:路由器没有缓存来容纳新到来的报文
        参数错误:报文中某个参数有错
  
    ping:Type=8,Code=0
第十五讲:介质访问控制MAC与以太网
    节点:主机和路由器统称为节点
    链路层服务:
        封装
        链路协调
        差错检测和纠正(部分提供)
        差错控制和流量控制(有些提供)
    奇偶校验:分为一维和二维
        一维检测单比特错误,二维检测并纠正单比特错误
    循环冗余校验(CRC):
        信息多项式D(x),冗余多项式R(x),码多项式T(x)
        T(x)=xr·D(x)+R(x),即T=2r·D XOR R
        生成多项式G(x):双方确定用来计算R(x)的一个r+1比特模式的多项式
        R(x)=xr·D(x)÷G(x)的余式
    多路访问:
        冲突,多路访问协议
    MAC协议的分类:
        信道划分:
            TDMA: 时分多址
                若节点不发送,其时间片轮空
            FDMA: 频分多址
                若节点不发送,其子频带空闲
        随机访问:
            发送前不侦听信道:ALOHA家族:
                Pure ALOHA:
                    任何节点有数据发送就可以立即发送
                    节点通过侦听信道判断本次传输是否成功
                    若不成功,立即以概率P重传,以概率(1-P)推迟至下一个帧时
                    信道最大利用率= 1/(2e) = 0.18
                时隙ALOHA:
                    节点只能在时隙开始时发送帧
                    若没检测到冲突:
                        节点可在下一个时隙发送新的帧
                    若检测到冲突:
                        节点在随后的每一个时隙中以概率P重传,直至发送成功
                    最大利用率= 1/e = 0.37
            发送前侦听信道:CSMA家族
                载波侦听多路访问(CSMA)
                带冲突检测CD的CSMA:
                    通过测量收到的信号强度检测冲突(冲突信号的强度较大)
                    检测到冲突后立即停止正在传输的数据帧(减少信道浪费)
                指数退避算法说明以太网无法保证性能
        轮流:
            轮询
            令牌传递
        CSMA/CD(以太网)
        CSMA/CA(802.11)
        中心节点轮询(蓝牙)
        令牌传递(令牌总线,IBM令牌环,FDDI)
    MAC地址长6个字节,一般用“-”分隔的12个十六进制数表示
    数据部分最少46字节。为了保证数据发送完成之前检测到冲突。需要保证帧大小最少为64字节。
    64=46(数据部分)+2*6(源和目的MAC地址)+4(CRC校验码)+2(高层协议type)
第十六讲:ARP与交换机
    地址解析:
        静态解析:
            提前设置好对应关系
        动态解析:
            ARP协议获取对应关系
    ARP协议:
        广播方式发送,单播方式回应
        
    ARP改进:
        增加缓存:
            先查缓存再发报文,并更新缓存表
            超时(一般为15~20分钟)后删除
        免费ARP:
            每个节点在启动时主动广播一个ARP请求,在目标字段内填入自己的IP地址
            确定自己的IP地址没有被使用并更新其他ARP缓存
    ARP欺骗:
        解决办法:
            ARP表采用静态的方式,但不适用大型网络
            采用DHCP snooping(监听)技术
            软件监视
    交换机:反向学习算法配置转发表
        当帧到来时:
            记录帧的输入端口
            用帧的目的MAC地址查找转发表
            if 找到目的MAC地址 //已知节点
                then{
                    if 目的地址所在端口=帧的到来端口
                       then丢弃帧  //帧过滤
                    else转发帧到表项指定的端口 //按转发表转发}
            else扩散帧  //未知节点向输入端口以外的所有端口转发
        用帧的目的地址查找转发表(转发决策):
            转发、丢弃、扩散
        用帧的源地址查找转发表(更新转发表)
    交换机: 流量隔离
        交换机过滤分组
        交换机可以通过接口将子网分割成LAN段
    交换机不能连接异构链路(即MAC协议不同的网络)
    路由器可以连接异构链路(重新封装链路层帧)
    交换机不能阻止广播帧的传播:通过交换机连接的所有主机在同一个广播域中
    路由器可以阻止广播帧的传播:每个路由器端口是一个独立的广播域
    一旦交换机的连接出现环形拓扑,有些帧会永远在环中循环
    交换机运行生成树算法,将有环图变成一棵生成树:
        选举根网桥,根端口和指定端口。
        其他端口置为阻塞状态,不传播数据帧
    VLAN:
        基于交换机端口
        基于MAC地址
        基于IP地址
    中继端口(trunk port):使不同VLAN通过同一条中继链路与其它交换机中的相同VLAN通信
    trunk不能实现不同VLAN间通信,不同VLAN之间的通信需要通过三层设备(路由器/三层交换机)来实现
    三层交换机更快:将转发表内容缓存,使用硬件交换机构实现IP的路由功能,做到一次路由,多次转发。
第十七讲:Web网页获取过程
    ➢DHCP:获取上网参数
    ➢DNS:解析IP地址
    ➢ARP:IP地址到MAC地址解析
    ➢通过3次握手建立TCP连接
    ➢发送HTTP请求,获取网页

万字长文快速复习计算机网络(适用于有一定基础的同学)相关推荐

  1. SpringCloud系列知识快速复习 -- part 1(SpringCloud基础知识,Docker,RabbitMQ)

    SpringCloud知识快速复习 SpringCloud基础知识 微服务特点 SpringCloud常用组件 服务拆分和提供者与消费者概念 Eureka注册中心 原理 Ribbon负载均衡 原理 负 ...

  2. Mysql 学习笔记(快速复习)

    Mysql 学习笔记(快速复习) 一.MySQL 基础 1.数据库连接工具 1.1.Navicat 使用教程 2.DDL 操作数据库 2.1.创建新数据库 2.2.删除数据库 2.3.使用数据库 3. ...

  3. 万字长文带你 搞定 linux BT 宝塔面板 之外网上快速搭建苹果CMS电影网站

    文章目录 万字长文带你搞定宝塔面板 一.本地搭建宝塔面板及安装ecshop 1.1前言 1.2面板特色功能 1.3安装环境说明 1.4安装BT面板 1.5常用管理命令 1.6 BT面板一键安装LAMP ...

  4. 计算机网络基础知识点快速复习手册

    前言 本文快速回顾了计算机网络书本中常考的的知识点,用作面试复习,事半功倍. 主要内容有:计算机网络体系结构,TCP与UDP,UDP/TCP实现DEMO代码 面试知识点复习手册 全复习手册文章导航 全 ...

  5. transformer模型_【预训练模型】万字长文梳理NLP预训练模型!从transformer到albert...

    公众号关注 "ML_NLP"设为 "星标",重磅干货,第一时间送达! " 万字长文梳理NLP预训练模型的发展历程,从transformer到alber ...

  6. 【1.6万字长文】华为战略管理方法论介绍(含开发战略到执行DSTE、业务领先模型BLM、业务执行力模型BEM、组织绩效和战略解码)

    第一本全方位阐述华为端到端战略管理体系的著作<华为战略管理法:DSTE实战体系>出版了!!当当网.京东均可下单购买. 第一本全方位阐述华为端到端战略管理体系的著作<华为战略管理法:D ...

  7. 万字长文保姆级教你制作自己的多功能QQ机器人

    转载请注明出处:小锋学长生活大爆炸(https://xfxuezhang.blog.csdn.net/) 若发现存在部分图片缺失,可以访问原文:万字长文保姆级教你制作自己的多功能QQ机器人 - 小锋学 ...

  8. 万字长文全解读 | 浅析银行数字化转型之二:打造金融敏捷中心

    本文作者: 刘伟光,蚂蚁金服副总裁,目前致力于蚂蚁金服技术的商业推广和生态建设.在加入蚂蚁金服前,他在企业软件市场深耕多年,创建Pivotal软件大中华区分公司,开创了企业级大数据以及企业级云计算Pa ...

  9. 牛津大学人类未来研究所:万字长文谈AI新职场方向-政策研究

    最近两年,虽然AI这个词语充斥在人类的媒体和生活中,但实际上AI技术的发展才刚刚起步,目前AI能做的事情还非常初级.黑暗森林法则里的"技术大爆炸"不知道何时会突然到来,各种法律.伦 ...

最新文章

  1. 科研文献|粪便污染可以解释人为影响环境中抗生素耐药基因丰度
  2. irq domain介绍和代码导读
  3. 尼日利亚学生开发者,用阿里云PAI打造了卡通头像神器
  4. Tomcat的安装及使用
  5. QT乱码总结4.细谈本地编码
  6. shell对于字符串的操作
  7. 基于 Azure 的认知服务将文本合成语音
  8. B 站崩了,受害程序员聊聊
  9. 华为云基于云原生媒体网络,又出重磅新品
  10. 【题解】生日蛋糕-C++
  11. inset亿万条数据_初识数据分析(一)
  12. JavaWeb学习--Servlet认识
  13. 求车牌号问题(C语言程序设计)
  14. 新建的分支 has no tracked branch
  15. virtualbox报错 提示:E_FAIL (0x80004005)
  16. 【学习日记】Dom基础
  17. 如何对U盘文件数据加密,U盘加密方法教程分享
  18. 01、java02-运算符 流程控制 方法
  19. ETCD教程(一) 通过docker安装etcd集群
  20. ae制作的mg如何用到html,AE实战案例教程:如何制作MG动画

热门文章

  1. assign()函数
  2. 解决51单片机学习过程中mac环境下虚拟机不能安装ch341驱动的问题
  3. C语言面试题实战汇总01
  4. 【vijos】【图论】【最短路径】【SPFA】想越狱的小杉
  5. 驾考秘籍-科目三路考-咸阳周陵科三考场考试流程
  6. 由于不正确卸载或安装导致无法安装新版qq
  7. 大白NBIOT 移远BC26模块模组OpenCpu开发视频教程(有连接移动、电信平台的opencpu源码)
  8. 基于 Amazon SageMaker 构建细粒度情感分析应用【附部署视频】
  9. 电阻器指南(一)-基本知识
  10. 六段极富历史意义的代码