计算机网络总结

1. 计算机网络由若干结点和连接这些结点的链路组成。网络中的结点可以是计算机、集线器、交换机或路由器。网络之间可以通过路由器互连起来,构成互联网。
即:网络把计算机(主机)连接在一起,互联网把网络通过路由器连接在一起。
2. 在网络边缘的端系统之间的通信方式:客户-服务器方式(C/S 方式)和 对等方式(P2P方式)。
3. 物理层。
4. 数据链路层。
数据链路层使用的信道:点对点信道和广播信道。
链路:从一个结点到相邻结点到一段物理线路。
数据链路:把实现了通信协议(来控制数据的传输)的硬件和软件加到链路上。最常用的方法是使用网络适配器来实现这些协议。
数据链路层的协议数据单元:帧。
数据链路层协议的三个基本问题:封装成帧,透明传输,差错检测。
点对点协议(PPP):用户计算机接入ISP(互联网服务提供商)时进行通信的协议。
5. MAC(媒体接入控制)子层。 计算机与外界局域网的连接时通过通信适配器进行的。适配器是嵌入在主机上的一块网络接口板,又称网络接口卡(网卡)。在这种通信适配器上装有处理器和存储器(RAM和ROM)。适配器和局域网之间的通信时通过电缆/双绞线串行传输方式进行的,适配器和计算机之间的通信通过计算机主板上的I/O总线以并行传输方式进行。因此,适配器的一个重要功能就是要进行数据串行传输和并行传输的转换。在计算机的操作系统上安装适配器的设备驱动程序,用来管理适配器:告诉适配器应从存储器的什么位置上把多长的数据块发送到局域网,或者应当在存储器的的什么位置上把局域网传送过来的数据块存储下来。
6. 计算机的软件地址(IP地址)在计算机的存储器中。
    计算机的硬件地址/物理地址(MAC地址)在适配器的ROM中。6个字节48位。
 
 
7. 适配器具有过滤功能。适配器从网络上每收到一个MAC帧就先用硬件检查MAC帧中的目的地址,如果是发往本站的帧则收下,否则将此帧丢弃。
8. 以太网是一种广播类型的局域网网络,采用的协议是CSMA/CD,载波监听多点接入/碰撞检测。 协议的要点:发送前先监听,边发送边监听,一旦发现总线上出现了碰撞,就立即停止发送。然后按照退避算法等待一段随机时间后再次发送。
9. 宽带上网的主机使用的链路协议:PPPoE(PPP over Ethernet):把PPP协议中的PPP帧再封装到以太网中来传输。
10. 网络层。向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务,不提供服务质量的承诺。
11. 网际协议IP 是 TCP/IP体系中两个最主要的协议之一。 
12. 网络层其他协议:地址解析协议(ARP),网际控制报文协议(ICMP),网际组管理协议(IGMP)
13. 将网络互联的中间设备:
  • 转发器:物理层。
  • 网桥:数据链路层。
  • 路由器:网络层。
  • 网关:网络层以上。用网关连接两个不兼容的系统需要在高层进行协议的转换。
当中间设备是转发器或网桥时,仅仅把一个网络扩大了,从网络层的角度看,这仍是一个网络。网络互连是指用路由器进行网络互连和路由选择。
14. IP地址:给互联网上的每一台主机/路由器的每一个接口分配一个在全世界范围内唯一的32位标识符。
15. 分类的IP地址。IP地址 ::= {<网络号>, <主机号>}
A类:0,8+24
B类:10,16+16
C类:110,24+8
D类:1110,多播
E类:1111,保留今后使用
16. 特殊的IP地址:
网络号;                                      主机号;
全零:保留地址(本网络);      全零:“本主机”所连的网络地址;
127:    环回测试;                        全1:   本网络所有主机;
注:网络号127(01111111)用于本地软件环回测试本主机的进程之间的通信,本主机的协议软件会处理数据报中的数据,不会把数据报发送到任何网络上。
B类最小网络地址:128.1.0.0
C类最小网络地址:192.0.1.0
17. 路由器仅根据目的主机所连的网络号转发分组。
IP地址是主机/路由器到网络的接口,当一台主机同时连到两个网络时,则需要两个相应的IP地址。一个网络时指具有相同网络号的主机的集合。
18. IP地址和硬件地址的区别。
  • 物理地址是数据链路层和物理层使用的,IP地址是网络层和以上各层使用的是一种逻辑地址。
  • IP地址放在IP数据报的首部,硬件地址放在MAC帧的首部。IP数据报在数据链路层加上首部和尾部被封装成帧。
  • 主机的用户只需要知道另一个主机的IP地址即可与之通信,而在实际数据传输过程中,需要利用ARP(地址解析协议)将IP解析为MAC地址找到目的主机。但是这一过程是对用户屏蔽的。IP数据报首部的源/目的地址是不变的,而MAC帧的首部的硬件地址是随着转发过程中经过的路由器改变的。
19. 地址解析协议:从网络层使用的IP地址,解析出在数据链路层使用的硬件地址。
ARP是解决同一局域网上的主机或路由的IP地址和硬件地址的映射问题。如果目的主机和源主机不在同一网络上,则无法解析,也不需要解析。因为在转发分组时,源主机的数据报会先转发给中间经过的路由器,只需要知道同一网络的路由器的硬件地址即可。
ARP过程:源主机广播发送ARP请求分组(IP地址,硬件地址,请求的IP地址) -> 相同IP地址的目的主机发送ARP响应分组(IP地址,硬件地址)->  源主机在其ARP高速缓存中写入目的地址的IP地址到硬件地址的映射。
20. 为什么需要IP地址,不直接用硬件地址通信?
世界上存在许多网络,使用不同的硬件地址,要使这些网络通信,需要经过复杂的硬件地址转化过程。使用IP地址对用户屏蔽了复杂的数据传输过程,只需要知道目的主机的IP地址即可完成通信,而实际上的IP地址到硬件地址的转换是又ARP协议自动完成的。
21. IP层转发分组。
路由表指出某个网络应如何转发。路由信息:(目的网络地址,下一跳地址)
当路由器收到一个待转发的数据报,在从路由表得到下一跳路由器的IP地址后,不是把这个地址填入IP数据报,而是送交数据链路层的网络接口软件。网络接口软件负责把下一跳路由器的IP地址转换成硬件地址,将此硬件地址放在链路层的MAC帧的首部,然后根据该硬件地址找到下一跳路由器。
分组转发过程:从数据报中提取目的主机的IP地址,得到目的网络地址N ->  N是与此路由器直接相连的网络,直接交付 -> 若路由表中有目的地址为D的特定主机路由,则将数据报传送给下一跳路由器 -> 达到网络N的路由 -> 默认路由 -> 报告转发分组出错。
22. 划分子网。
将所属的物理网络划分为若干个子网,这个单位对外仍表现为一个网络。从主机号借用若干位作为子网号。
IP地址 ::= {<网络号>, <子网号>, <主机号>}
子网掩码:网络号位为1。
子网掩码 & IP地址 = 子网的网络地址
23. 划分子网的路由信息。(目的网络地址,子网掩码,下一跳地址)
分组转发过程,要用目的主机的IP地址&路由表中的子网掩码得到目的网络地址 与 路由表中的目的网络地址匹配来判断该IP是否数据该网络。
24.构成超网。无分类编址CIDR(无分类域间路由选择)。
IP地址 ::= {<网络前缀>, <主机号>}
斜线记法:128.14.35.7/20   表示网络前缀是前20位
地址掩码:网络前缀位为1。255.255.240.0
路由表中路由信息:(网络前缀,下一跳地址)
最长前缀匹配
25. 网际控制报文协议(ICMP)。允许主机/路由器提供差错和异常报告。作为IP数据报的数据部分。ICMP差错报告报文和ICMP询问报文。
ICMP的应用PING(分组网间探测)测试主机之间的连通性。使用了ICMP回送请求与回送回答报文。traceroute/tracert 跟踪分组从源点到终点的路径。
26. 路由选择协议
内部网关协议(IGP):RIP,OSPF 和外部网关协议(EGP):BGP。
RIP协议使用运输层的用户数据报UDP进行传送。RIP分组要先封装成UDP数据报再封装成IP数据报。
OSPF直接用IP数据报传送。OSPF分组直接作为IP数据报的数据部分。
BGP协议使用运输层的用户数据报TCP进行传送。
27. 路由器是具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。
从路由器某个输入端口收到的分组,按照分组要去的目的地(目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器。
28. IPv6,128位,冒号十六进制记法。FF05:0:0:0:0:0:0:B3。零压缩。FF05::B3
29. IP多播。
网际组管理协议(IGMP)
30. 虚拟专用网(VPN)。利用公用的互联网作为本机构各专用网之间的通信载体。
本地地址。
专用地址,互联网中的所有路由器对目的地址是专用地址的数据报不进行转发。
10.0.0.0/8
172.16.0.0/20
192.168.0.0/16
31. 运输层。
真正进行通信的实体是在主机中的进程。端到端的通信是应用进程之间的通信。
运输层的复用和分用:在发送方不同的应用进程都可以使用同一个运输层协议传送数据,接收方的运输层在剥去报文的首部后能够把这些数据正确交付目的应用进程。
32. 网络层为主机之间提供逻辑通信,运输层为应用进程之间提供端到端的逻辑通信。
运输层向高层用户屏蔽了下面网络核心的细节,使应用进程看见的就是好像在两个运输测实体之间有一条端到端的逻辑通信信道。
33. 运输层协议。
面向连接的TCP协议 和 无连接的UDP协议。
34. TCP/IP的运输层使用16位的端口号标志一个端口。端口号标志计算机应用层中各个进程在和运输层交互时的层间接口。
35. 互联网上的计算机通信采用客户-服务器方式(C/S方式)
服务器端使用的:熟知端口号(系统端口号)0~1023。登记端口号
客户端使用的: 短暂端口号 49152~65535
36. 用户数据报协议(UDP)
  • 无连接的。发送数据之前不用建立连接。
  • 尽最大努力交付的。不保证可靠交付。
  • 面向报文的。UDP一次交付一个完整的报文。
  • 没有拥塞控制。
  • 支持一对一、一对多、多对多的交互通信。
  • 首部开销小,只有8个字节。(源端口,目的端口,数据报长度,检验和)
37. 传输控制协议(TCP)
  • 面向连接的。使用TCP协议之前要建立TCP连接(3次握手),数据传输完毕要释放连接(4次握手)。
  • 提供可靠交付。通过TCP连接传输的数据,无差错、不丢失、不重复,并且按需到达。
  • 面向字节流的。TCP把应用程序交付的数据看作是一连串的无结构的字节流。TCP不关心应用进程一次把多长的报文发送到TCP缓存中,而是根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文端应包含多少个字节。
  • TCP连接提供的是一对一(端点)的全双工通信。TCP连接的两端都设有发送缓存和接受缓存,用来临时存放双向通信的数据。
  • 提供拥塞控制和流量控制。
38. TCP连接的端点叫套接字(socket)。socket = (IP地址:端口号)
TCP连接 ::= {socket1, socket2} = {(IP1: port1), (IP2: port2)}
39. 停止等待协议。每发送完一个分组就停止发送,等待对方的确认,在收到确认后再发送下一个分组。
每发送完一个分组,设置一个超时计时器,超时重传。
如果出现确认丢失/确认迟到,发送方都会默认进行超时重传,接收方会丢弃收到的重复的分组,再次发送确认分组。如果是确认迟到,则发送方收到迟到的确认分组后什么也不做。
40. 使用自动重传请求协议(ARQ)可以在不可靠的传输网络上实现可靠的通信。
41. 连续ARQ协议
发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。
接收方采用累计确认的方式,对按序到达的最后一个分组发送确认。
42. TCP报文首部。20字节。
  • 源端口和目的端口。
  • 序号。本报文段发送的数据的第一个字节的序号。
  • 确认号。期望收到对方下一个报文段的第一个字节的序号N。(同时暗示到N-1为止所有数据正确收到了)
  • 数据偏移。报文端数据部分到整个报文端起始处的偏移。
  • 保留。
  • 控制位:
  • 1. 紧急URG。URG=1表示报文中有紧急数据,不存入缓存尾部,而是将紧急数据插入本报文段数据最前面。
  • 2. 确认ACK。ACK=1,确认号字段生效。
  • 3. 推送PSH。
  • 4. 复位RST。
  • 5. 同步SYN。SYN=1,ACK=0表示连接请求报文。
  • 6. 终止FIN。FIN=1表示报文端的发送方的的数据已发送完毕,要求释放连接。
  • 窗口。2字节。窗口指的是发送一方作为接收方的窗口大小。窗口值作为接收方让发送方设置其发送窗口的依据。
  • 检验和。
  • 紧急指针。
  • 选项。
43. TCP可靠传输的实现
  • 以字节为单位动滑动窗口协议。
  • 超时重传时间的选择。
  • 选择确认SACK。在首部加上“允许SCAK”的选项,可以确认不连续的字节块。
44. 流量控制。让发送方的发送速率不要太快,要让接收方来得及接收。
因为发送方的发送窗口不鞥超过接收方的接受窗口,每次在发送确认报文的时候修改窗口值,可以控制发送方发送的数据大小。
TCP为每一个连接设有一个持续计时器。如果最后窗口大小为零,则在持续计时器到时间后发送一个零窗口探测报文,接收方可以在给出该报文段的确认时给出新的窗口值。
45. 拥塞控制
对网络中资源的需求超过了该资源能提供的部分,使得网络性能变坏。
拥塞控制,防止过多的数据注入到网络中,使网络中的路由器或链路过载。
方法:慢开始,拥塞避免,快重传,快恢复。
解释:(慢开始)一开始将拥塞窗口值设置为1个发送方最大报文段,然后每收到一个对信道报文段的确认,就加倍拥塞窗口大小 1-2-4-8-16…。(拥塞控制)设置一个慢开始门限,如果拥塞窗口大小超过了慢开始门限,就是用“加法增大”窗口大小8-9-10-11-12…。(快重传)发送方收到连续3个重复确认,就马上重传丢失的报文段。接收方对收到的连续报文段的最后一个发送重复确认。(快恢复)因为报文段丢失引起的快重传之后,可以启动快恢复算法,而不是用慢开始算法。
 
 
46. TCP的运输连接管理。
运输连接的3个阶段:连接建立 -> 数据传送 -> 连接释放。
连接建立:3次握手。即在客户和服务器之间狡猾3个TCP报文段。
过程:
  • 服务器端B处于LISTEN(监听)状态。
  • 客户端A向B发送连接请求报文段,同步位SYN=1,初始序号seq=x。客户端进入SYN- SENT(同步已发出)状态。
  • B收到连接请求后,向发送确认报文段,确认位ACK=1,确认号ack=x+1,初始序号seq=y。服务器端进入SYN- RCVD(同步收到)状态。
  • A收到B的确认报文段之后,向B发送对确认的确认报文段,确认位ACK=1,确认号ack=y+1,自己的序号seq=x+1。客户端进入ESTABLISHED(已建立连接)状态。
  • B收到A的确认报文段之后,也进入ESTABLISHED(已建立连接)状态。
 
 
连接的释放:4次握手
过程:
  • A和B都处于ESTABLISHED状态。
  • A的应用进程向其TCP发出连接释放报文段,并停止发放数据,主动关闭TCP连接,终止位FIN=1,序号seq=u。A进入FIN- WAIT-1(终止等待1)状态。
  • B收到连接释放报文段后发出确认,ACK=1,确认号ack=u+1,序号seq=v。B进入CLOASE- WAIT(关闭等待)状态。TCP服务器进程要通知高层应用进程,A到B方向的连接释放了。TCP处于半关闭状态。若B仍需向A发送数据,A仍会接收。A收到B的确认后,进入FIN- WAIT-2(终止等待2)状态,等待B发出的连接释放报文段。
  • 若B没有要发送的数据了,其应用进程就通知TCP释放连接。B发出连接释放报文段,FIN=1,ack=u+1,seq=w。B进入LAST- ACK(最后确认)状态。
  • A收到B的连接释放报文段后,发出确认,ACK=1,ack=w+1,seq=u+1。A进入到TIME-WAIT(时间等待)状态,等到2MSL(最长报文段寿命)后进入CLOSE(关闭)状态。Why?—1)保证A发送的最后一个确认报文能到达B,2)保证该连接结束后所有报文段都从网络中消失,避免有失效的连接报文出现。
  • B收到A的确认后进入CLOSE(关闭)状态。
 
47. 应用层。应用层协议是为了解决某一类问题,且该问题的解决需要通过位于不同主机中的多个应用进程之间的通信和协同工作来完成。
48. 应用层的许多协议都是基于客户服务器方式。客户和服务器值通信中所涉及的两个应用进程。客户是服务请求方,服务器是服务提供方。
49. 域名系统。主机名字(域名)转换成IP地址
互联网的域名系统DNS:联机分布式数据库系统。
50. 过程:当一个应用进程需要把主机名解析为IP地址时,该应用进程就调用解析程序,称为DNS的一个客户,将待解析的域名放在请求报文中。
51. 互联网上的主机都有唯一的层次结构的名字。
mail.cctv.com 
三级域名.二级域名.顶级域名
52. 域名的解析过程。
  • 主机询问的本地域名服务器不知道被查询域名的IP地址,则本地域名服务器以DNS客户的身份向其他根域名服务器继续发出查询请求报文。(递归查询)
  • 根域名服务器查找不到则告诉本地域名服务器下一步可以向哪个服务器查询,然后本地域名服务器继续后续的查询。(迭代查询)
53. 文件传送协议(FTP)。使用TCP可靠传输。
FTP的服务器进程:主进程,负责接收新的请求;若干从属进程(控制进程和数据传送进程),负责处理单个请求。
文件传输过程中,FTP的客户和服务器之间要建立两个并行的TCP连接。
过程:主进程打开端口21,等待客户进程连接。客户进程发出连接请求,从属进程(控制进程)对客户进程的请求进行处理,创建控制连接;若客户进程发送文件传输请求,从属进程(控制进程)创建“数据传送进程”和“数据连接”(端口20)用于连接客户端和服务器端的数据传送。
54. 万维网(WWW)。分布式的超媒体系统。包含指向其他媒体文档的链接的文档。
浏览器:在用户主机上的万维网客户程序。保存万维网文档的逐句运行服务器程序。
客户程序(浏览器)向服务器程序发出请求,服务器程序返回客户需要的万维网文档。
  • 怎么标记互联网上的万维网文档?—— 统一资源定位符(URL)
  • 使用什么协议实现万维网上的链接?—— 超文本传送协议(HTTP)
  • 使不同风格的文档在各种各样的主机上都能显示?—— 超文本标记语言(HTML)
55. URL形式:<协议>://<主机>:<端口>/<路径>
  • 协议:使用什么协议获取该万维网文档。http、ftp
  • 端口和路径可省略
  • HTTP/1.0,每次请求文档都需要建立连接;HTTP/1.1,使用持续连接。非流水线方式:客户收到前一个相应后才能发出下一个请求;流水线方式:客户收到HTTP响应报文前能接着发新的请求报文。
56. 代理服务器(万维网高速缓存)。将最近的请求和相应暂存在本地磁盘中,新的请求到达时,如果磁盘中有返回暂存的响应。
57. HTTP报文。请求报文和响应报文。
请求报文的第一行:“请求行”:方法/URL/HTTP版本
  • 方法:对所请求对象进行的操作。
  1. GET:请求读取由URL所标志的信息
  2. POST:给服务器添加信息
响应报文的第一行:“状态行”:HTTP版本/状态码/解释状态码语句
  • 状态码:1xx 通知信息;2xx 成功;3xx 重定向;4xx 客户的差错;5xx 服务器的差错;
请求行:
GET /dir/index.html HTTP/1.1
状态行:
HTTP/1.1 202 Accept
HTTP/1.1 400 Bad Request    
HTTP/1.1 404 Not Found。   
 
58. 可以用Cookie来跟踪用户在某个网站上的活动。
过程:
  • 用户A浏览某个网站时,该网站的服务器为用户A产生唯一的识别码,并以此作为索引在服务器后段产生一个项目。并在给A的响应报文中添加一个叫“Set- cookie”的首部行。(Set- cookie:识别码)
  • A收到响应后,浏览器在其管理的Cookie文件中添加新的一行为该服务器主机和cookie识别码。当A继续浏览该网站时浏览器会从Cookie文件中取出网站对应的识别码,放到请求报文的Cookie首部行。(Cookie:识别码)
  • 则网站就能跟着用户A(识别码)在该网站的活动。
59. 通用网关接口(CGI程序/脚本)。定义了动态文档应如何创建,输入数据应如何提供给应用程序,以及输出结果如何使用。
过程:浏览器传送给服务器的数据传送给CGI程序,CGI程序将结果返回给服务器,服务器对该输出结果进行解释并生成HTML文档返回给浏览器。
  • JavaScript
60. 动态主机配置协议(DHCP)。可以自动获取配置信息。
  • 协议软件参数化,在协议软件中给这些参数赋值叫做协议配置。
  • 具体的配置信息取决于协议栈。连接到互联网的计算机要配置:IP地址/子网掩码/默认路由器IP地址/域名服务器IP地址。
过程:
  • 需要IP地址的主机向DHCP服务器广播发送发现报文,该主机成为DHCP客户。
  • 本地网络上的所有主机都能收到这个广播报文,只有DHCP服务器先在其数据库中查找该计算机的配置信息,,并以提供报文的形式返回给该主机。
  • 每个网络上有一个DHCP中继代理。主机到DHCP中继代理时广播形式,中继代理到服务器时单播形式。
  • DHCP服务器分配给每个客户的IP地址时临时的,有“租用期”。租用期过了一半时间发送请求报文更新租用期。服务器同意的话就更新租用期,否则客户需重新申请新的IP。若前一个请求报文没有被响应,则租用期到了3/4的时候再次发送请求报文更新租用期。
61. 系统调用和应用编程接口(API)。
  • Why?有些特定的应用程序需要联网却不能直接使用已经标准化的互联网应用协议。
  • 系统调用将控制权从应用进程传递给了操作系统。操作系统在必要的操作之后把控制权返回给应用进程。
  • 套接字接口。网络编程把套接字作为应用进程和运输层协议之间的接口。套接字时应用进程为了获得网络通信服务而与操作系统进行交互时使用的一种机制。
  • 当应用进程需要使用网络通信时,首先发出socket系统调用,请求操作系统为其创建一个“套接字”。这个调用的实际效果时请求操作系统把网络通信所需要的一些系统资源(寸触控看、CPU时间、网络带宽等)分配给该进程。这些资源的总和叫做“套接字描述符”(一个号码),被返回给应用进程。
  • 操作系统有一个存放套接字描述符的表,每一个套接字描述符有一个指针指向存放套接字的地址。
62.系统调用。
  • 连接建立阶段(服务器)
  1. bind:端口与IP地址写到已创建的套接字中。
  2. listen:套接字设为被动方式监听客服端请求。
  3. accept:接受客户进程发来的连接请求。
  • 连接建立阶段(客户)
         1.  bind:套接字的本地端口和IP地址。
         2.  connect:请求和服务器建立连接。
  • 数据传送阶段
  1. send:发送请求。
  2. recv:接收回答。
  • 连接释放阶段
  1. close
原文地址:https://www.cnblogs.com/tristatl/p/14941232.html