计算机网络--梳理

电信网络

---电路交换网络

---------FDM

---------TDM

---分组交换网络

---------虚电路网络,一定面向连接

---------数据报网络,两者都有,TCP,UDP

有连接的服务,TCP

可靠,顺序,字节流传输,丢失确认和重传,流量控制,拥塞控制。

HTTP,FTP,SMTP使用的是TCP

无连接的服务,UDP

不可靠数据传输,无流量控制,无拥塞控制,数据报协议

DNS,网络视频,电话等,SNMP,网络管理协议

分组交换的四种延迟

结点处理延迟,检查错误位,选择输出链路,高速路由器处理延迟-微秒级

排队延迟,等待被发送到输出链路上的时间,取决于路由器的拥塞程度

传输延迟,R=链路带宽 (bps),L=分组长度 (bits),发送分组比特流的时间 = L/R

传播延迟,d = 物理链路的长度,s = 介质的信号传播速度 (~2x108 m/sec),传播延迟 = d/s

网络分层,5层,应用,传输,网络,链路,物理

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

7层中的表示层,表示数据格式转换,比如加密,会话层,通信机制,验证服务。

应用层

HTTP,SMTP,一个拉协议,一个推协议

DNS,分层

根DNS服务器

第二层,COM,EDU,ORG服务器

第三层,amazon.com DNS服务器,pbs.org DNS服务器

本地DNS服务器

两种查询方式,递归查询和迭代查询


其实我有一点是觉得非常奇怪的,目前说是有这两种查询方式,但是纵观网上各种说法,尤其是下面这个网站

http://blog.csdn.net/lycb_gz/article/details/11720247

根本就没区分迭代还是递归好嘛,都是迭代的好嘛,只是发起迭代的对象不同而已,完全和我课本里面讲的不一样。维基百科上面也是以迭代的方式开展的。

http://blog.csdn.net/crazw/article/details/8986504

这个讲的很详细,其实现实中用的都是代理DNS进行迭代询问的,根本没有递归这一说,我没在其他地方见到过上图的递归方式,难道当时老师骗我们的?

http://zh.wikipedia.org/wiki/%E5%9F%9F%E5%90%8D%E7%B3%BB%E7%BB%9F

这是维基百科的说明,也是迭代方式进行的。所以我想,各个网站大可不必一定要区分递归和迭代,而强为之。递归应该只是一种理论方式而已,这种方式没有实现,因为,根服务器怎么可能帮你去递归查询功能嘛。


TCP编程和UDP编程,JAVA版本,C++版本,JAVA的IO,TODO

传输层

多路复用,从多个套接字收集数据, 用首部封装数据,然后将报文段传递到网络层(多路复用)

多路分解,将接收到的数据段传递到正确的套接字(多路分解)

UDP,校验和,

UDP检验和的计算方法是:
1.按每16位求和得出一个32位的数;
2.如果这个32位的数,高16位不为0,则高16位加低16位再得到一个32位的数;
3.重复第2步直到高16位为0,将低16位取反,得到校验和。

UDP头,8个字节

可靠传输

增加ACK和NAK的机制(第二代),规定时间内没收到ACK则重发(第三代)。

下一代的技术,流水线技术,允许发送多个包,进行多个确认。go back n



选择重传。

TCP技术

字节流,意味着TCP不像UDP那样有信息边界,流水线,提供了拥塞控制,设置窗口大小。全双工,TCP是双向连接的,双通道的,一方通道不通,另外一方可以继续传输局。面向连接,流量控制。TCP报头,20字节

可靠数据传输,

流水线技术处理报文段,累积确认,TCP 使用单个重发定时器。

流量控制,拥塞控制

乘性递减(发生丢失事件后将拥塞窗口减半),加性递增(每个RTT内如果没有丢失事件发生,拥塞窗口增加一个MSS : 检测);慢启动(当连接开始的时候以指数方式增加速率,直到第一个丢失事件发生:倍增 CongWin在每个 RTT内,每收到ACK完成增加CongWin。总结: 初始速率慢但是呈指数快速增长);对超时时间反应

对拥塞事件的反映

三个重复的确认后:
CongWin 减半
然后,窗口线性增长
但超时事件后,TCP进入慢启动过程:
CongWin 立即设置为 1个 MSS;
窗口开始指数增长
到一个阀值后(这个阈值是之前最大值的二分之一)再线性增长

主要原因是,收到3哥重复的确认,说明网络还是具有一定的能力进行传输,但是如果是超时,那就直接慢启动,从头开始。

网络层

虚电路和数据报网络

最长前缀匹配,因为路由表中的每个表项都指定了一个网络,所以一个目的地址可能与多个表项匹配。最明确的一个表项——即子网掩码最长的一个——就叫做最长前缀匹配。之所以这样称呼它,是因为这个表项也是路由表中,与目的地址的高位匹配得最多的表项。

路由器工作原理

运行路由算法/协议 (RIP, OSPF, BGP)
将分组从输入链路转发到适当的输出链路
NAT网络地址转换

解决地址紧张问题,但是存在一系列的问题

ICMP,因特网控制报文协议。建立在IP上的

选路算法,Dijkstra算法,距离向量算法

两个点集合,一个是最小距离集合,一个是未知集合。每次从未知集合中选择一个距离最小集合最小的点

距离向量算法,是通过接收从邻居传过来的信息进行计算,动态进行刷新。

层次选路,不同于上面两个方法,真实环境不可能路由器存储所有结点,所以层次选路,每个网络管理者管理自己的区域。

自治域内的选路算法,RIP, OSPF, BGP

序列化和反序列化

序列化:序列化是将对象状态转换为可保持或传输的形式的过程,反序列化是相反的。其实这里是指的,将对象转换为网络或存储的格式,比如字符流之类的。明白了python里面的一个类cpickle,load和dump就是做这个事情的。

链路层和局域网

链路层服务:把网络层数据报加头和尾,封装成帧,帧头中包括指明目的和源的“物理地址”(不同于IP地址)。以前一直觉得网络大部分处理的时候是将包加个包头就可以了,没想到原来链路层帧是加头和尾的。

802.3帧结构

前导
8字节
DA
6字节
SA
6字节
长度
2字节
数据 FCS

 

Etllernet帧结构

前导
8字节
DA
6字节
SA
6字节
类型
2字节
数据 FCS

FCS:它用来存放循环冗余校验(CRC)

链路层帧的错误检测,不是纠错。CRC校验,在数据后面添加一个一个r位的校验位


在链路上进行传输数据的时候

载波侦听多路访问

冲突检测

当一个节点要发送数据时,首先监听信道,看是否有载波。
如果信道空闲,则发送数据。
如果信道忙,则继续对信道进行监听(1-持续CSMA)。一旦发现空闲,便立即发送。
如果在发送过程中检测到碰撞,则停止自己的正常发送,转而发送一短暂的干扰信号jam,强化冲突,使其它站点都能知道出现了冲突。
发送了干扰信号后,退避一随机时间,重新尝试发送。
链路层编址

ARP地址解析协议

1、A想发送分组给 B,A知道 B的IP地址
2、假设B的MAC地址不在A的ARP表中
3、A广播包含B的IP地址的ARP查询包
目的MAC地址= FF-FF-FF-FF-FF-FF
在局域网上的所有机器都能收到ARP查询
4、B收到 ARP包,回给A一个带有B的MAC地址的包
包单播unicast发送给A的MAC地址
5、A缓存IP-to-MAC地址对在 ARP表中,直到信息过期 (timeout)
软件规定: 如果ARP表的信息在一定时间内没有刷新,则信息将过期。

这也就是为什么wireshark软件会抓取到这么多的ARP的包
集线器和交换机

集线器:物理层,物理层上结点汇集会有冲突

交换机:链路层,存储转发以太帧,没有冲突,自学习,因为有交换机表



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值