欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

计算机网络知识总结

程序员文章站 2022-07-14 20:38:09
...

计算机网络(简称网络)把许多计算机连接在一起,而互联网把许多网络连接在一起,是网络的网络。

计算机网络体系结构:
计算机网络知识总结

各层作用及协议

计算机网络知识总结
物理层

传输数据的单位:比特
数据传输系统:源系统(源点、发送器) --> 传输系统 --> 目的系统(接收器、终点)

通道:

1、单向通道(单工通道):只有一个方向通信,没有反方向交互,如广播。
2、双向交替通信(半双工通信):通信双方都可发消息,但不能同时发送或接收。
3、双向同时通信(全双工通信):通信双方可以同时发送和接收信息。

通道复用技术:

1、频分复用(FDM,Frequency Division Multiplexing):不同用户在不同频带,所用用户在同样时间占用不同带宽资源。
2、时分复用(TDM,Time Division Multiplexing):不同用户在同一时间段的不同时间片,所有用户在不同时间占用同样的频带宽度。
3、波分复用(WDM,Wavelength Division Multiplexing):光的频分复用。
4、码分复用(CDM,Code Division Multiplexing):不同用户使用不同的码,可以在同样时间使用同样频带通信。

数据链路层

主要信道:

1、点对点信道
2、广播信道

点对点信道

数据单元:帧

三个基本问题:

1、封装成帧:把网络层的 IP 数据报封装成帧,SOH - 数据部分 - EOT。
2、透明传输:不管数据部分什么字符,都能传输出去;可以通过字节填充方法解决(冲突字符前加转义字符)。
3、差错检测:降低误码率(BER,Bit Error Rate),广泛使用循环冗余检测(CRC,Cyclic Redundancy Check)。

点对点协议(Point-to-Point Protocol):

点对点协议(Point-to-Point Protocol):用户计算机和 ISP 通信时所使用的协议。

广播信道

广播通信:

1、硬件地址(物理地址、MAC 地址)
2、单播(unicast)帧(一对一):收到的帧的 MAC 地址与本站的硬件地址相同
3、广播(broadcast)帧(一对全体):发送给本局域网上所有站点的帧
4、多播(multicast)帧(一对多):发送给本局域网上一部分站点的帧

网络层

1、IP(Internet Protocol,网际协议)是为计算机网络相互连接进行通信而设计的协议。
2、ARP(Address Resolution Protocol,地址解析协议)
3、ICMP(Internet Control Message Protocol,网际控制报文协议)
4、IGMP(Internet Group Management Protocol,网际组管理协议)

IP 网际协议

IP 地址分类:

IP 地址 ::= {<网络号>,<主机号>}

计算机网络知识总结
IP 数据报格式:

计算机网络知识总结
ICMP 网际控制报文协议

ICMP 报文格式:

计算机网络知识总结
应用:

PING(Packet InterNet Groper,分组网间探测)测试两个主机之间的连通性。
TTL(Time To Live,生存时间)该字段指定 IP 包被路由器丢弃之前允许通过的最大网段数量。

内部网关协议

1、RIP(Routing Information Protocol,路由信息协议)
2、OSPF(Open Sortest Path First,开放最短路径优先)

外部网关协议

BGP(Border Gateway Protocol,边界网关协议)

IP多播

1、IGMP(Internet Group Management Protocol,网际组管理协议)
2、多播路由选择协议

VPN 和 NAT

VPN(Virtual Private Network,虚拟专用网)
NAT(Network Address Translation,网络地址转换)

路由表包含什么?

1、网络 ID(Network ID, Network number):就是目标地址的网络 ID。
2、子网掩码(subnet mask):用来判断 IP 所属网络
3、下一跳地址/接口(Next hop / interface):就是数据在发送到目标地址的旅途中下一站的地址。其中 interface 指向 next hop(即为下一个 route)。一个自治系统(AS, Autonomous system)中的 route 应该包含区域内所有的子网络,而默认网关(Network id: 0.0.0.0, Netmask: 0.0.0.0)指向自治系统的出口。

根据应用和执行的不同,路由表可能含有如下附加信息:

1、花费(Cost):就是数据发送过程中通过路径所需要的花费。
2、路由的服务质量
3、路由中需要过滤的出/入连接列表

运输层

协议:

TCP(Transmission Control Protocol,传输控制协议)
UDP(User Datagram Protocol,用户数据报协议)

端口:
计算机网络知识总结TCP

TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,其传输的单位是报文段。

特征:

面向连接
只能点对点(一对一)通信
可靠交互
全双工通信
面向字节流

TCP 如何保证可靠传输:

确认和超时重传
数据合理分片和排序
流量控制
拥塞控制
数据校验

TCP 报文结构

计算机网络知识总结
TCP 首部

计算机网络知识总结
TCP:状态控制码(Code,Control Flag),占 6 比特,含义如下:

URG:紧急比特(urgent),当 URG=1
时,表明紧急指针字段有效,代表该封包为紧急封包。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据), 且上图中的
Urgent Pointer 字段也会被启用。

ACK:确认比特(Acknowledge)。只有当 ACK=1 时确认号字段才有效,代表这个封包为确认封包。当 ACK=0 时,确认号无效。

PSH:(Push function)若为 1 时,代表要求对方立即传送缓冲区内的其他对应封包,而无需等缓冲满了才送。

RST:复位比特(Reset),当 RST=1 时,表明 TCP
连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。 SYN:同步比特(Synchronous),SYN
置为 1,就表示这是一个连接请求或连接接受报文,通常带有 SYN 标志的封包表示『主动』要连接到对方的意思。

FIN:终止比特(Final),用来释放一个连接。当 FIN=1 时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。

UDP

UDP(User Datagram Protocol,用户数据报协议)是 OSI(Open System Interconnection 开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,其传输的单位是用户数据报。

特征:

无连接
尽最大努力交付
面向报文
没有拥塞控制
支持一对一、一对多、多对一、多对多的交互通信
首部开销小

UDP 报文结构

计算机网络知识总结

UDP 首部

计算机网络知识总结

TCP/UDP 图片来源于:

https://github.com/JerryC8080/understand-tcp-udp

TCP 与 UDP 的区别

1、TCP 面向连接,UDP 是无连接的;
2、TCP 提供可靠的服务,也就是说,通过 TCP 连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP 尽最大努力交付,即不保证可靠交付
3、TCP 的逻辑通信信道是全双工的可靠信道;UDP 则是不可靠信道。
4、每一条 TCP 连接只能是点到点的;UDP 支持一对一,一对多,多对一和多对多的交互通信。
5、TCP 面向字节流(可能出现黏包问题),实际上是 TCP 把数据看成一连串无结构的字节流;UDP 是面向报文的(不会出现黏包问题)
6、UDP 没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如 IP 电话,实时视频会议等)
7、TCP 首部开销20字节;UDP 的首部开销小,只有 8 个字节

TCP 黏包问题

原因:

TCP 是一个基于字节流的传输服务(UDP 基于报文的),“流” 意味着 TCP 所传输的数据是没有边界的。所以可能会出现两个数据包黏在一起的情况。

解决

1、 发送定长包。如果每个消息的大小都是一样的,那么在接收对等方只要累计接收数据,直到数据等于一个定长的数值就将它作为一个消息。
2、包头加上包体长度。包头是定长的 4 个字节,说明了包体的长度。接收对等方先接收包头长度,依据包头长度来接收包体。
3、在数据包之间设置边界,如添加特殊符号 \r\n 标记。FTP 协议正是这么做的。但问题在于如果数据正文中也含有 \r\n,则会误判为消息的边界。
4、使用更加复杂的应用层协议。

TCP 流量控制

概念:流量控制(flow control)就是让发送方的发送速率不要太快,要让接收方来得及接收。

方法
利用可变窗口进行流量控制。

计算机网络知识总结

TCP 拥塞控制

概念:拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。

方法

慢开始( slow-start )
拥塞避免( congestion avoidance )
快重传( fast retransmit )
快恢复( fast recovery )

TCP的拥塞控制图计算机网络知识总结
计算机网络知识总结
计算机网络知识总结

TCP三次握手四次挥手可以参考这两篇:网络编程-从TCP三次握手说起网络编程-TCP的四次挥手

应用层

DNS

DNS(Domain Name System,域名系统)是互联网的一项服务。它作为将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS 使用 TCP 和 UDP 端口 53。当前,对于每一级域名长度的限制是 63 个字符,域名总长度则不能超过 253 个字符。

域名:

域名 ::= {<三级域名>.<二级域名>.<*域名>},如:blog.huihut.com

FTP

FTP(File Transfer Protocol,文件传输协议)是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式,使用 TCP 数据报,提供交互式访问,双向传输。
TFTP(Trivial File Transfer Protocol,简单文件传输协议)一个小且易实现的文件传输协议,也使用客户-服务器方式,使用UDP数据报,只支持文件传输而不支持交互,没有列目录,不能对用户进行身份鉴定

TELNET

TELNET 协议是 TCP/IP 协议族中的一员,是 Internet 远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。
HTTP(HyperText Transfer Protocol,超文本传输协议)是用于从 WWW(World Wide Web,万维网)服务器传输超文本到本地浏览器的传送协议。
SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。
Socket 建立网络通信连接至少要一对端口号(Socket)。Socket 本质是编程接口(API),对 TCP/IP 的封装,TCP/IP 也要提供可供程序员做网络开发所用的接口,这就是 Socket 编程接口。

WWW

WWW(World Wide Web,环球信息网,万维网)是一个由许多互相链接的超文本组成的系统,通过互联网访问

URL

URL(Uniform Resource Locator,统一资源定位符)是因特网上标准的资源的地址(Address)

标准格式:

协议类型:[//服务器地址[:端口号]][/资源层级UNIX文件路径]文件名[?查询][#片段ID]

完整格式:

协议类型:[//[访问资源需要的凭证信息@]服务器地址[:端口号]][/资源层级UNIX文件路径]文件名[?查询][#片段ID]

其中【访问凭证信息@;:端口号;?查询;#片段ID】都属于选填项
如:https://blog.****.net/chen1415886044

HTTP

HTTP(HyperText Transfer Protocol,超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP 是万维网的数据通信的基础。

请求方法:
计算机网络知识总结

状态码(Status-Code)

1xx:表示通知信息,如请求收到了或正在进行处理
100 Continue:继续,客户端应继续其请求
101 Switching Protocols 切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到 HTTP 的新版本协议
2xx:表示成功,如接收或知道了
200 OK: 请求成功
3xx:表示重定向,如要完成请求还必须采取进一步的行动
301 Moved Permanently: 永久移动。请求的资源已被永久的移动到新 URL,返回信息会包括新的 URL,浏览器会自动定向到新 URL。今后任何新的请求都应使用新的 URL 代替
4xx:表示客户的差错,如请求中有错误的语法或不能完成
400 Bad Request: 客户端请求的语法错误,服务器无法理解
401 Unauthorized: 请求要求用户的身份认证
403 Forbidden: 服务器理解请求客户端的请求,但是拒绝执行此请求(权限不够)
404 Not Found: 服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置 “您所请求的资源无法找到” 的个性页面
408 Request Timeout: 服务器等待客户端发送的请求时间过长,超时
5xx:表示服务器的差错,如服务器失效无法完成请求
500 Internal Server Error: 服务器内部错误,无法完成请求
503 Service Unavailable: 由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的 Retry-After 头信息中
504 Gateway Timeout: 充当网关或代理的服务器,未及时从远端服务器获取请求

其他协议

SMTP(Simple Main Transfer Protocol,简单邮件传输协议)是在 Internet 传输 Email 的标准,是一个相对简单的基于文本的协议。在其之上指定了一条消息的一个或多个接收者(在大多数情况下被确认是存在的),然后消息文本会被传输。可以很简单地通过 Telnet 程序来测试一个 SMTP 服务器。SMTP 使用 TCP 端口 25。
DHCP(Dynamic Host Configuration Protocol,动态主机设置协议)是一个局域网的网络协议,使用 UDP 协议工作,主要有两个用途:
用于内部网络或网络服务供应商自动分配 IP 地址给用户
用于内部网络管理员作为对所有电脑作*管理的手段
SNMP(Simple Network Management Protocol,简单网络管理协议)构成了互联网工程工作小组(IETF,Internet Engineering Task Force)定义的 Internet 协议族的一部分。该协议能够支持网络管理系统,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。

参考:《计算机网络(第 7 版)》

计算机网络知识总结
(微信公众号【程序猿编码】)

计算机网络知识总结

(添加本人微信号,备注加群,进入程序猿编码交流群,领取学习资料,获取每日干货)

微信公众号【程序猿编码】,这里Linux c/c++ 、Python、Go语言、数据结构与算法、网络编程相关知识,常用的程序员工具。还有汇聚精炼每日时政、民生、文化、娱乐新闻简报,即刻知晓天下事!

相关标签: UNIX网络编程