您的位置:首页 > 理论基础 > 计算机网络

复习笔记——计算机网络

2016-04-10 16:57 405 查看
2014年12月考研前一周写的笔记。。。

放在这里,希望对其他人有帮助。。。

==================================

==================================

一.应用层

1.DNS

协议UDP,端口53。

递归查询和迭代查询。

2.FTP

协议TCP,端口20,21
控制链接,数据链接

端口20用于在客户端和服务器之间传输数据流,而端口21用于传输控制流,并且是命令通向ftp服务器的进口。

3.SMTP,POP3,IMAP

SMTP,TCP,25

POP3,TCP,110

4.HTTP(可以参考http://www.cnblogs.com/EricaMIN1987_IT/p/3837436.html

TCP,80

GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连,如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0%E5%A5%BD。如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。

POST把提交的数据则放置在是HTTP包的包体中。

HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的。HTTP有两类报文:请求报文和响应报文。

请求报文

一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成,下图给出了请求报文的一般格式。

 


 (1)请求行

请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。例如,GET /index.html HTTP/1.1。

HTTP协议的请求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。这里介绍最常用的GET方法和POST方法。

GET:当客户端要从服务器中读取文档时,使用GET方法。GET方法要求服务器将URL定位的资源放在响应报文的数据部分,回送给客户端。使用GET方法时,请求参数和对应的值附加在URL后面,利用一个问号(“?”)代表URL的结尾与请求参数的开始,传递参数长度受限制。例如,/index.jsp?id=100&op=bind。

POST:当客户端给服务器提供信息较多时可以使用POST方法。POST方法将请求参数封装在HTTP请求数据中,以名称/值的形式出现,可以传输大量数据,可用来传送文件。

(2)请求头部

请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。请求头部通知服务器有关于客户端请求的信息,典型的请求头有:

User-Agent:产生请求的浏览器类型。

Accept:客户端可识别的内容类型列表。

Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机。

(3)空行

最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头。

对于一个完整的http请求来说空行是必须的,否则服务器会认为本次请求的数据尚未完全发送到服务器,处于等待状态。

(4)请求数据

请求数据不在GET方法中使用,而是在POST方法中使用。POST方法适用于需要客户填写表单的场合。与请求数据相关的最常使用的请求头是Content-Type和Content-Length。

(5)请求示例

POST:

POST报文头如下:

POST /sn/index.php HTTP/1.1

Accept: */*

Accept-Language: zh-cn

host: localhost

Content-Type: application/x-www-form-urlencoded

Content-Length: 12

Connection:close

sn=123&n=asa

在http头后边有一空行,空行后边接着发送post数据,长度通过Content-Length: 12

指出,此post数据中包含两项

sn=123

n=asa

其中:Content-Type: application/x-www-form-urlencoded 指定POST数据的编码类型

Content-Length: 12 POST数据的长度

GET:

GET报问头如下:

GET /sn/index.php?sn=123&n=asa HTTP/1.1

Accept: */*

Accept-Language: zh-cn

host: localhost

Content-Type: application/x-www-form-urlencoded

Content-Length: 12

Connection:close

二.传输层

1.TCP



注:序号,确认号,可能是以字节为单位的。

       窗口大小,建立连接时,可选字段中有标明。比如下图中,是以4字节为单位。(multiplier:4)

tcp可选字段:



标准的tcp释放连接(http 服务器说数据已传输完,请求断开连接,服务器对我说断开):



第二个tcp发送之后,我依然可以向http服务器传送数据,但是http服务器,不会再发给我数据。





服务器和客户端对应状态:



累计确认:

A发送1,2,3,4,5给B,B收到1,2,4,5,B[ack] ack =3



重传

a.超时重传:

RTO = RTTS + 4 × RTTD

RTTS = (1-α) × (旧的RTTS) + α × (新的RTT样本)

RTTD = (1-β) × (旧的RTTD) + β × |RTTS - 新的RTT样本|

通常,

α = 0.125

β = 0.25

b.冗余确认重传:

多次(3次)收到对同一个报文的确认

流量控制和拥塞控制

a.流量控制,发送速度和接受速度匹配

    按照对方接收窗口rwnd的大小,调整发送速度

b.拥塞控制,传输过程中的网络拥塞

    对应于拥塞窗口cwnd的控制。

    (0)cwnd=1, 阈值ssthresh=xxx>=2

    (1)发送 cwnd 个报文, 每收到一个确认, cwnd+1,直到cwnd=ssthresh

        假设每个RTT发送一次,那么每次发送的报文数是指数增长的

    (2)每个往返时间 RTT,cwnd+1 ,直到等待超时或冗余确认

        假设每个RTT发送一次,那么每次发送的报文数是线性增长的

    (3)等待超时,ssthresh = cwnd/2, cwnd = 1

        冗余确认,ssthresh = cwnd/2, cwnd = ssthresh

c.发送窗口 = min(rwnd, cwnd)
一道相关的练习题:http://blog.csdn.net/u011240016/article/details/53066819

2.UDP



3.校验和计算步骤【1】

a.首先将检验和部分添零,加上UDP/TCP伪首部,划分一个个16进制数;

b.将这些数逐个相加,记得溢出的部分加到最低位上,这是循环加法:/*普通加法,但是进位要加到结尾*/

     0xc0a8+ 0x0166+……+0x0402=0x9b49

c.最后将得到的结果按位取反,则可以得到检验和位0x64B6

关于反码求和【2】

先取反再加,和先加再取反是一样的。

传说,大端和小端系统,算得的结果是相同的。

三.IP层

1.IP协议,IP报文



首部长度 4B

总长度 1B

片偏移 8B

Version:4

IHL:20/4=5B,所以前4个字节一般是4500

identification:分片标识,同一个分组的标识相同。

2.NAT

一般家用的路由应该都是NAT路由,好像又不算是路由,因为只有LAN 和WAN口,而LAN口之间更像是交换机,LAN相连的机器有统一的子网掩码,是一个子网的。而且根本不用涉及到路由表一类的东西。

大概是这个样子:家用路由器=交换机+NAT

NAT 由于涉及到端口的转换,应是传输层的设备。

3.域内路由协议,域间路由协议

a.RIP

    UDP报文,端口520

    相邻路由

    交换全网信息

    坏消息传的慢

    定时交换信息

    最大步长15,所以适用于规模不大的网络

    路由表:在收到的信息中找个最小的跳数,简单的比较

b.OSPF

    IP报文,协议89

    报文域内广播

    交换和自己相连的路由的信息

    收敛快,网络有变动,响应会更及时

    路由表:最短路径算法,计算路由的时候有权值,而RIP假设路由和路由间的距离相等

c.BGP

    TCP    也就是交换BGP报文的路由必然是已经通过TCP相连,已经通过EGP建立了可以相互通信的路径

    只要找到可达路径,关键是不能有路由环路

4.ICMP,DHCP,ARP

ARP:MAC 和 IP 映射,算是网际层?比ip高或者个ip同层

DHCP:动态分配IP地址,家用路由一般就是用这个,用UDP报文,应用层

ICMP:ping,还有其他一些询问信息和报错的功能,用IP报文,算是IP层?

5.ipv6

ipv4: 32 = 4*8 (xxx.xxx.xxx.xxx)

ipv6:128 =  8*16 (xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx)

6.IP组播

组播专用IP:224.0.0.0--239.255.255.255

一定是基于UDP的,因为TCP只能一对一

需要支持多播的路由

多播地址好像可以和MAC有映射关系,不过逻辑上说不通啊。。。

IP组播和局域网的广播的区别和联系,书上没说明白。。。

组播信息是如何在Internet上传播的呢?IP地址是互联网服务商自动分配的,那么组播地址是怎么分配的呢?感觉在子网上用才对吧?就像10.0.0.1或者192.168.0.1这种。

辅导书上讲得不明不白。。。就这样吧。。。

找到一篇稍微全一点的《Internet组播 》【4】,但依然说的不是很清楚。

7.移动IP

手机3G网络应该就是这个东西

8.ip网关和ip路由器是一样的

四.数据链路层

1.以太网数据帧

9.CIDR

无类域间路由,Classless Inter-Domain Routing

CIDR地址例子:222.80.18.18/25

和子网掩码的表示方式相对应

10.AS

自治系统:autonomous system

在互联网中,一个自治系统(AS)是一个有权自主地决定在本系统中应采用何种路由协议的小型单位。这个网络单位可以是一个简单的网络也可以是一个由一个或多个普通的网络管理员来控制的网络群体,它是一个单独的可管理的网络单元(例如一所大学,一个企业或者一个公司个体)。一个自治系统有时也被称为是一个路由选择域(routing domain)。一个自治系统将会分配一个全局的唯一的16位号码,有时我们把这个号码叫做自治系统号(ASN)。

四.数据链路层

1.组帧:比特填充和违规编码法

比特填充:帧首尾加上,01111110;帧数据部分出现连续5个1是后面添0。应用:广域网链路协议PPP和HDLC。

违规编码:

该法在物理层采用特定的比特编码方法时采用。例如,曼彻斯特编码方法,是将数据比特“1”编码成“高—低”电平对,将数据比特“0”编码成“低—高”电平对。而“高—高”电平对和“低—低”电平对在数据比特中是违法的。可以借用这些违法编码序列来界定帧的起始与终止【5】

2.差错控制:循环冗余码和海明码

循环冗余码:模二除法

海明码

3.流量控制和可靠传输

流量控制:滑动窗口

停止等待

后退N帧

选择重传

(知道意思就可以了,挺简单的)

4.截至访问控制(就是信道怎么分配)

(1)信道划分,偏向于静态划分

    时分多路复用

    频分多路复用

    波分多路复用(光的频分多路复用)

    码分多路复用(码分多址,CDMA,手机网络)

(2)随机分配

    Aloha(夏威夷语,你好)

        aloha:想发就发,发送碰撞后,随机时间重传

        时隙Aloha:加入时隙划分,发送和时隙对齐,只能在时隙开始发送

    CSMA

        1-坚持CSMA,p-坚持CSMA:如果信道忙,则一直监听,空闲时以p的概率发送,(1-p)推迟到下一时隙

        非坚持CSMA:如果信道忙,则随机时间后再看看

    CSMA/CD,802.3

        “先听后发,边听边发,冲突停发,随机重发”

        其实就是CSMA+帧最小长度限制+发送时监听+二进制指数退避

    CSMA/CA,802.11

        去看百度知道【6】

    令牌环网

        没什么好说的

5.二进制指数退避【7】:
(1). 将冲突发生后的时间划分为长度为2t的时隙
(2). 发生第一次冲突后,各个站点等待0或1个时隙再开始重传
(3). 发生第二次冲突后,各个站点随机地选择等待0,1,2或3个时隙再开始重传
(4). 第i次冲突后,在0至2的i次方减一间随机地选择一个等待的时隙数,再开始重传
(5). 10次冲突后,选择等待的时隙数固定在0至1023(2的10次方减一)间
(6). 16次冲突后,发送失败,报告上层。
举例
如果第二次发生碰撞:
n = 2
k = MIN(2,10) = 2
R = {0, 1, 2, 3)
延迟时间 = {0, 51.2 us, 102.4 us, 153.6 us} 其中任取一
6.以太网MAC帧

一般是662,6(目的mac)+(6源mac)+2(长度|类型)

7.广域网

PPP是面向字符的,HDLC是面向比特的。

PPP:具体看百度知道【8】,下图是家用路由PPP建立连接的日志。

使用的验证方式应该是PAP(传说是明文传密码的)。

LCP,应该是链路控制协议。

DHCP,IP协商?



HDLC
百度知道【9】

不知道在现实世界中对应什么。。。没接触过沾边的东西。

五.物理层
1.奈奎斯特定理【10】
  奈奎斯特证明,对于一个带宽为W赫兹的理想信道,其最大码元(信号)速率为2W波特。这一限制是由于存在码间干扰。如果被传输的信号包含了M个状态值(信号的状态数是M),那么W赫兹信道所能承载的最大数据传输速率(信道容量)是:

C =2×W×log2M(bps)
  假设带宽为W赫兹信道中传输的信号是二进制信号(即信道中只有两种物理信号),那么该信号所能承载的最大数据传输速率是2Wbps。例如,使用 带宽为3KHz的话音信道通过调制解调器来传输数字数据,根据奈奎斯特定理,发送端每秒最多只能发送2×3000个码元。如果信号的状态数为2,则每个信 号可以携带1个比特信息,那么话音信道的最大数据传输速率是6Kbps;如果信号的状态数是4,则每个信号可以携带2个比特信息,那么话音信道的最大数据 传输速率是12Kbps。

  因此对于给定的信道带宽,可以通过增加不同信号单元的个数来提高数据传输速率。然而这样会增加接收端的负担,因为,接收端每接收一个码元,它不再只是从两个可能的信号取值中区分一个,而是必须从M个可能的信号中区分一个。传输介质上的噪声将会限制M的实际取值。

2.香农定理【10】

  奈奎斯特考虑了无噪声的理想信道,而且奈奎斯特定理指出,当所有其他条件相同时,信道带宽加倍则数据传输速率也加倍。但是对于有噪声的信道,情况将会 迅速变坏。现在让我们考虑一下数据传输速率、噪声和误码率之间的关系。噪声的存在会破坏数据的一个比特或多个比特。假如数据传输速率增加了,每比特所占用 的时间会变短,因而噪声会影响到更多比特,则误码率会越大。

  对于有噪声信道,我们希望通过提高信号强度来提高接收端正确接收数据的能力。衡量信道质量好坏的参数是信噪比(Signal-to-Noise Ratio,S/N),信噪比是信号功率与在信道某一个特定点处所呈现的噪声功率的比值。通常信噪比在接收端进行测量,因为我们正是在接收端处理信号并试 图消除噪声的。如果用S表示信号功率,用N表示噪声功率,则信噪比表示为S/N。为了方便起见,人们一般用10log10(S/N)来表示信噪比,单位是 分贝(dB)。S/N的值越高,表示信道的质量越好。例如,S/N为1000,其信噪比为30dB;S/N为100,其信噪比为20dB;S/N为10,
其信噪比为10dB。
  对于通过有噪声信道传输数字数据而言,信噪比非常重要,因为它设定了有噪声信道一个可达的数据传输速率上限,即对于带宽为W赫兹,信噪比为S/N的信道,其最大数据传输速率(信道容量)为:
C = W×log2(1+S/N)(bps)
  例如,对于一个带宽为3KHz,信噪比为30dB(S/N就是1000)的话音信道,无论其使用多少个电平信号发送二进制数据,其数据传输速率 不可能超过30Kbps。值得注意的是,香农定理仅仅给出了一个理论极限,实际应用中能够达到的速率要低得多。其中一个原因是香农定理只考虑了热噪声(白 噪声),而没有考虑脉冲噪声等因素。

  香农定理给出的是无误码数据传输速率。香农还证明,假设信道实际数据传输速率比无误码数据传输速率低,那么使用一个适当的信号编码来达到无误码数据传 输速率在理论上是可能的。遗憾的是,香农并没有给出如何找到这种编码的方法。不可否认的是,香农定理确实提供了一个用来衡量实际通信系统性能的标准。

六.网络设备

物理层

    中继器

    集线器(多扣中继器)

数据链路层

    网桥

    交换机(多口网桥),交换机算法

网络层

    路由器(网关),路由算法

参考资料

【0】未标明的很多内容出自wiki

【1】http://www.2cto.com/net/201305/216076.html

【2】http://www.jb51.net/network/113082.htmlhttp://blog.csdn.net/li_xiang1102/article/details/6901660

【3】http://blog.chinaunix.net/uid-26413668-id-3376762.html

【4】http://bbs.csdn.net/topics/60455829

【5】http://book.51cto.com/art/200707/50535.htm

【6】http://baike.baidu.com/view/645723.htm

【7】http://baike.baidu.com/view/2984826.htm

【8】http://baike.baidu.com/subview/30514/8100295.htm

【9】http://baike.baidu.com/view/89174.htm

【10】http://www.360doc.com/content/13/1105/15/960151_326814850.shtml
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: