计算机网络基础知识.
一、计算机网络分类
局域网(Local Area Network,LAN)是在一个局部的地理范围内(如一个企业、一个学校或一个网吧),一般是方圆几千米以内,将各种计算机、服务器、外部设备等互相连接起来组成的计算机通信网。
城域网(Metropolitan Area Network,MAN)一般来说是在一个城市,连接距离在10~100公里范围内的计算机互联网。MAN 比 LAN 相比扩展的距离更长,连接的计算机数量更多,在地理范围上MAN网络可以说是LAN网络的延伸。
广域网(Wide Area Network,WAN)也称为远程网,所覆盖的范围比城域网更广,起到LAN或MAN之间的网络互连的作用。广域网能连接多个城市或国家,或横跨几个洲并能提供远距离通信,形成国际性的远程网络,互联网是世界范围内最大的广域网。
总的来说,计算机网络是由多台计算机、交换机、路由器等其他网络设备,通过传输介质和软件连接在一起组成的。
二、网络分层模型
为了使不同计算机厂家生产的计算机能够相互通信,以便在更大范围内建立计算机网络,国际标准化组织(ISO)在1978年提出了“开放式系统互联参考模型”,即著名的OSI/RM模型(Open System Interconnection/Reference Model)。它将计算机网络体系结构的通信协议分为七层,自下而上依次是物理层(Physics Layer) 、数据链路层(Data Link Layer)、网络层(Network Layer)、传输层(Transport Layer)、会话层(Session Layer)、表示层(Presentation Layer)和 应用层(Application Layer)。对于每一层,至少制定两项标准:服务定义和协议规范。
TCP/IP 协议不是TCP 和 IP 这两个协议的合称,而是指整个TCP/IP协议族。TCP/IP 协议定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了四层的层次结构,自下而上依次为网络接口层(Network Interface Layer)、网络层(Network Layer)、传输层(Transport Layer)和 应用层(Application Layer)。
三、IP地址
在网络上,每一台要通信的主机(含网络设备)也必须有一个IP地址,它的作用就是其他主机可以通过这个IP地址找到它。
每个IP地址都由两部分组成:网络号和主机号。网络号用来标识这个IP地址属于哪一个网络。主机号用来标识这个网络中的唯一一台主机。
IP 地址的长度是32位,每8位组成一个部分,这样一个IP地址就可以分为四个部分,每个部分如果用十进制表示,其值在0-255之间。
IP 地址类型分为 5 种:
A 类地址:最高位固定总为0,加上之后紧跟的7位,共8位表示网络号,剩下24位表示主机号。
B类地址:最高两位固定位10,与后面的14位一起构成网络号,剩下的16位表示主机号。
C类地址:最高三位固定是110,和后面的21位一起构成网络号,只有八位表示主机号。
D类地址:最高四位固定是1110,不分网络地址和主机地址,是一个专门保留的地址,并不指向特定的网络,目前这类地址多被用在多点广播(Multicast)中,用来一次寻址一组计算机。
E类地址:最高五位固定是11110,不分网络地址和主机地址,为将来使用保留。
在一个网络中,不是所有的主机号都可以分配给主机使用,其中有两个主机号是有特殊含义的,一个是全0的主机号,表示网络本身;一个是全1的主机号,表示广播地址。
另外,还需要特别指出的是,A、B、C 三类地址中还各有一个网段被应用在内部局域网中,而不能在实际的互联网上出现,即 10 网段、172.16.x.x 到 172.31.x.x 网段 和 192.168 网段。
四、子网掩码
随着互联网的普及,IP 网络越来越不够分,因此,人们提出了很多解决方案,其中比较著名的就是子网掩码和 IPV6。
子网掩码是一种用来指明一个IP地址的哪些位标识的是网络号以及哪些位标识的是主机号的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址分成网络地址和主机地址两部分。
举个例子来说明子网掩码。A类地址默认前八位固定,则它默认的子网掩码是 11111111.00000000.00000000.00000000 ,即 255.0.0.0 。现在也很流行这种写法来标识子网掩码: xx.xx.xx.xx/8,表示IP地址的前8位表示网络号。
五、域名
域名(Domain Name),是由一串用点号分隔的名字组成的 Internet 上某一台计算机或计算机组的名称,用来在数据传输时标识计算机的电子方位。其主要目的是用来代替数字型的IP地址,方便记忆和书写。
域名可分为不同级别,包括顶级域名、二级域名等。顶级域名又可分为两类:
一类是国家顶级域名,200 多个国家都按照ISO3166国家代码分配了顶级域名,例如中国的是cn,美国的是us,韩国的是kr 等。
另外一类是国际顶级域名,例如工商企业的 com,表示网络提供商的 net,表示非盈利组织的 org 等。
二级域名是指顶级域名之下的域名,例如在国际顶级域名下,由域名注册人申请注册的网络名称,例如sohu、apple 等。在国家顶级域名下,一般二级域名表示注册企业类别的符号,例如 gov、edu 等。
六、TCP/IP 协议簇
TCP(Transmission Control Protocol)和 IP(Internet Protocol)是互联网的众多通信协议中最为著名的。从字面意义上讲,有人会认为 TCP/IP 是指 TCP 与 IP 两种协议,实际生活当中有时也确实就是指这两种协议,然而在很多情况下,它只是利用 IP 进行通信时所必须用到的协议簇的统称。
TCP/IP 的协议都是由 IETF 讨论决定的,注重开放性和实用性(那些已经成为标准的 TCP/IP 协议其实早已被人们广泛使用,然后才总结成标准)。
以下是 TCP/IP 与 OSI 分层之间的大致关系,不难看出,TCP/IP 与 OSI 在分层模块上稍有区别。OSI 注重 “通信协议必要的功能是什么”,而 TCP/IP 则更强调 “在计算机上实现协议应该开发哪种程序”。
TCP/IP 应用层的架构绝大多数属于客户端/服务端模型。提供服务的程序叫服务端,接受服务的程序叫客户端。在这种通信模式中,提供服务的程序会预先被部署到主机上,等待接收任何时刻客户可能发送的请求。
七、其他
1、TCP “三次握手”过程?
第一次握手:建立连接时,源端发送同步序列编号(Synchronize Sequence Numbers,SYN) 包(SYN = j)到目的端,等待目的端确认。
第二次握手:目的端收到 SYN 包,确认源端的 SYN(ACK = j + 1),同时自己也发送一个SYN包(SYN = k),即 SYN + ACK 包。
第三次握手:源端收到目的端的 SYN + ACK 包,向目的端发送确认包ACK(ACK = k+1)。此包发送完毕,源端和目的端完成三次握手,源端可以向目的端发送数据。
2、TCP “四次挥手”过程?
标记位为 FIN,表示“请求释放连接“;
3、TCP 协议通过为传输的每一个字节设置顺序递增的序列号,由接收方在收到数据后按序列号重组数据并发送确认信息,当发现数据包丢失时,TCP 协议重传丢失的数据包,从而 TCP 协议解决了网络数据包丢失的问题和数据包乱序问题。
4、TCP 协议为每个 TCP 数据段(以太网上通常最大为 1460 字节)使用 32 位的校验和从而检查数据错误问题。 TCP 协议通过设置接收和发送窗口的机制极大的提高了传输性能,解决了网络传输的时延与吞吐问题。
5、TCP 协议最为复杂而巧妙的是其几十年来不断改进的拥塞控制算法,使得 TCP 可以动态感知底层链路的带宽加以合理使用并与其他 TCP 链接分享带宽(TCP friendly)。TCP拥塞控制算法发展的过程中出现了如下几种不同的思路:
-
- 基于丢包的拥塞控制:将丢包视为出现拥塞,采取缓慢探测的方式,逐渐增大拥塞窗口,当出现丢包时,将拥塞窗口减小,如Reno、Cubic等。
- 基于时延的拥塞控制:将时延增加视为出现拥塞,延时增加时增大拥塞窗口,延时减小时减小拥塞窗口,如Vegas、FastTCP等。
- 基于链路容量的拥塞控制:实时测量网络带宽和时延,认为网络上报文总量大于带宽时延乘积时出现了拥塞,如BBR。
- 基于学习的拥塞控制:没有特定的拥塞信号,而是借助评价函数,基于训练数据,使用机器学习的方法形成一个控制策略,如Remy。