计算机网络基础知识

最近重新熟悉了计算机网络的基础知识,整理了一些其中的重点。

network由若干node和连接这些node的link组成。 连接在因特网上的计算机都称为主机(host)。 路由器是一种特殊的计算器,它是连接不同网络的专用设备,用户并不直接使用路由器处理信息,因此不能将路由器称为主机(host)。 路由器是一种专用计算机,是实现分组交换的关键构件,其任务是转发收到的分组。 TCP/IP是一个四层的体系结构,包含应用层,运输层,网际层,和网络接口层。 TCP/IP中应用层协议例如:http,FTP,SMTP协议等。 运输层协议主要有: 传输控制协议(TCP)提供面向连接,可靠的数据传输服务,数据的传输单位是报文段(segment)。 用户数据报协议(UDP)提供无连接,尽最大努力的数据传输服务(不保证数据传输的可靠性),其数据传输的单位是用户数据报。 网络层通常使用IP协议。 因特网主要的网络层协议是无连接的网际协议即IP协议。 总结:在计算机网络的五层协议中,使用了类似于编程中的封装方式对数据进行处理,即上层与下层进行数据交付时无需关心下层的实现,只需要遵循固定的协议即可正确传送数据给下层,每层重重封装,只需要考虑本层的协议和服务即可正确的进行服务。

单工:单向通讯 半双工:双向通讯,但无法同时发送或同时接收 全双工:双向通讯,可同时发送和接收。

网络层: IP地址及编址方式 整个因特网是一个单一的逻辑网络,IP地址是给因特网上的每一个主机或路由器的接口分配一个唯一的32位标识符。 通常将32位IP地址中的每八位用相等的十进制数字表示,并在这些数字之间加上一个点,这就是点分十进制记法。 IP地址编址方式: 1.分类编址 分类编址将IP地址划分成两个固定长度字段,其中第一个字段位网络号(net-id),第二个字段是主机号(host-id),可以简单的显示为: IP地址: 这种编址方式的好处是分配IP地址时只需要分配网络号,而主机号由你自己进行分配,且路由器可以根据目的主机的网络号进行分组转发,不用考虑host-id,减少了转发表的大小和查询路由表的时间。 编址方案通常有以下几种: A类地址:前8位为net-id,后24位为host-id,第一位为0 B类地址:前16位为net-id,后16位为host-id,前两位为10 C类地址:前24位为net-id,后8位为host的id,前3位为110 D类地址:前4位为1110 E类地址:前4位为1111 IP:,

2.划分子网编址 划分子网编址方式是对分类编址方式的改进,从net-id中借用不定长度的位数用于作为子网的subnet-id,将两级分类IP地址变成三级分类IP地址:,, 划分子网的编址方式减少了对A,B类地址的浪费,可以将大的A,B类地址分给多个组织或网络提供商使用。

3.无分类编址 无分类域间路由选择(CIDR)消除了传统的分类编址及划分子网的概念,因此可以更加有效的分配IPv4地址。 CIDR将32位IP地址划分成两个部分,类似于分类编址方式,前一部分是不定长的“网络前缀”(network-prefix),代替了分类编址中的net-id,后一部分用于指明主机地址,即host-id。因此CIDR依旧是两级编址的方式,但这是一种无分类的两级编址。 CIDR IP:, 在CIDR编址方式中,由于网络前缀是不定长的,因此无法直接根据IP地址确定网络号和主机号,因此CIDR采用了与IP地址相配合的32位地址掩码(address mask)。地址掩码是由前面的连续的1和后面的连续的0组成,前面1个个数即IP地址网络前缀的长度,后面0的个数即IP地址host-id的长度,对应分类的IP地址中,A类地址的默认掩码位255.0.0.0,B类则为255.255.0.0,C类则为255.255.255.0. 使用掩码的好处即为计算机可以快速得知具体的网络地址,只需要将IP地址与掩码地址的二进制进行与操作,即可获得对应的网络地址。 CIDR常见的还有斜线记法,即在IP地址后方加上斜线“/”,然后加上网络前缀所占长度 例如:142.71.52.43/24 则其对应的掩码为11111111 11111111 11111111 00000000 即255.255.255.0

地址解析协议ARP: ARP解决了IP地址与物理地址的动态映射问题。 ARP解决的方法是在主机ARP告诉缓存中存放一个从IP地址到物理地址的映射表,且该表在不断动态更新。 每个主机都由一个ARP告诉缓存,里面有本局域网上各个主机和路由的映射表。 当当前主机需要发送IP数据报时,先查询ARP告诉缓存中有无对应映射,如果有就直接将该物理地址写入MAC帧,如果没有则发送一个ARP广播附带基本的信息,当目标IP接受到该广播后,会返回一个ARP响应并附带基本的信息。当前主机获取到信息并将该信息写入到ARP高速缓存中。 ARP高速缓存设有生存周期。 ARP用于解决同一个局域网上的主机或路由器的IP地址和物理地址的映射问题。

路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。

运输层为上方的应用层提供端到端通信服务。只有主机的协议栈才有运输层。通信的真正断电不是主机而是主机中的进程,即端到端的通信是应用进程之间进行的通信。

网络层是为主机之间提供逻辑通信,而运输层为应用进程之间提供端到端的逻辑通信。 运输层为应用层提供了两种不同的运输协议,即面向连接的TCP和无连接的UDP。 运输层向上屏蔽了下面网络核心的细节,它使得应用进程看见的是两个运输实体的一条端到端的逻辑通信通道,当运输层使用面向连接的TCP协议时,尽管它的下层提供的是尽最大努力交付的服务,但这种逻辑通信通道依然可以作为一条全双工的可靠信道,但当运输层采用无连接的UDP协议时,这种通信通道依旧是一条不可靠信道。

在网络中,两个进程要进行通信,必须有一个进程主动发起,而另一个进程要事先准备好,这就是典型的C/S通信模式,通常Client端是主动发起通信的进程,Server端被动接收通信。 TCP/IP为上层提供了两个不同的运输层协议,即: 用户数据报协议UDP,与传输控制协议TCP UDP在传送数据前不需要先行建立连接,而TCP则是面向连接的服务。 运输层的复用与分用的原理类似于一个集中式入口,当下层向运输层交付数据时,该入口负责决定将数据解析并交付给上层的哪个应用进程,这就是简单的分用原理,而当上层应用层对下层运输层进行数据交付时,该入口负责对数据进行解析并决定如何正确交付给下层,这就是简单的复用原理,即上层所有应用均可使用运输层这个入口。 运输层若要对数据进行正确的交付,就必须给每个应用进程赋予一个专有的标志,在TCP/IP网络中,使用的是一种与操作系统无关的协议端口号,来实现对通信应用进程的标记。 端口是应用层与运输层之间接口的抽象,端口号是应用进程的运输层地址,因此在运输协议数据单元即TCP报文段或UDP用户数据报的首部必须包含两个字段,即源端口号和目标端口号。当运输层收到IP层交付的数据,解析目标端口号来决定数据交付给上层的哪个应用进程。 端口使用一个16位的端口号进行标志,即一台计算机最多可以有65536个端口,但端口号只具有本地意义,在不同的计算机中,相同的端口号之间没有必然的联系。 所以两个计算机之间相互进行通信,不仅需要知道对方的IP地址,并且需要知道对方的端口号。 运输层端口号分为下面三种: 1.熟知端口 0-1023 这种端口负责分配给一些常用的应用层固定使用,如我们熟知的http是80端口,https是443端口。 2.登记端口 1024-49151该类端口不分配也不控制,但可以在IANA注册登记以防止重复使用,例如MySQL默认的端口号为3306. 3.动态端口 49152-65535该类端口是留给客户端进程选择作为临时端口,当客户进程发起通信时会先为自己选择一个尚未使用的端口,待通信结束后释放该端口。

用户数据报协议UDP特点: 1.无连接发起通信不需要建立连接,减少了开销 2.使用尽最大努力交付即不保证可靠的数据交付 3.没有拥塞控制因此网络出现拥塞时不会让源主机的数据发送速率降低。 4.面向报文不划分分组,但报文太长时会在IP层进行分片。 5.支持一对一,一对多,多对多的交付通信。 6.首部开销仅有8个字节,比TCP的20字节首部要短的多。

UDP首部格式: 总计八个字节,由4个字段组成。 <源端口><目标端口><长度><校验和>

传输控制协议TCP TCP是TCP/IP体系中面向连接的运输层协议,提供了全双工和可靠交付的服务。 TCP主要特点: 1.面向连接的运输层协议。 2.每条连接只能有两个端点,即每条连接只能进行点对点服务,即一对一 3.提供可靠交付服务 4.提供全双工通信,TCP允许双方在任何时候发送或接收数据,TCP在两端设有缓存用来临时存放双方的通信数据 5.面向字节流,TCP中的流是指流入到进程或从进程流出的字节序列。

TCP连接是一种抽象的逻辑连接。 TCP连接仅存在于两个端系统中,而中途进行转发的路由或交换机等并不知道该连接的存在。 与UDP不同的是,TCP的发送和接收缓存都是分配给一个连接的,而不是一个端口,即当来自不同源的TCP报文段,即使目标IP与目标端口号相同,也不可能会被交付给同一个TCP接受缓存,因为它们在不同的TCP管道中进行传输。 TCP是面向连接的协议,连接的建立和释放是每次面向连接的通信中必不可少的过程,因此,TCP连接就有三个阶段,即连接建立,数据传送和连接释放。 TCP的连接建立过程中要解决以下三个问题: 1.要使每一方能够确认对方的存在 2.要使得双方协商一些参数 3.能够对运输的实体资源进行分配和初始化

TCP连接采用C/S方式,主动发起连接建立的应用进程叫做客户,被动等待连接建立的应用进程叫做服务器 TCP连接建立的过程通常采用三次握手的方式。

拥塞控制:当网络中出现太多的分组时,网络的性能开始下降,这种情况成为拥塞。所谓的拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。 当网络拥塞而丢弃分组时,该分组在其经过路径中所占用的全部资源都被白白浪费掉。 拥塞控制的基本方法是接受方向发送方提供某种直接的反馈,以抑制发送方的发送速率。 拥塞控制可以分为开环控制和闭环控制两大类。 根据拥塞反馈信息的形式,又可以将闭怀壅塞控制算法分为显式反馈算法和隐式反馈算法。 TCP的拥塞控制的方法通常是让每一个发送方根据所感知到的网络拥塞成都来限制其向连接发送流量的速率。

域名系统DNS 域名到IP地址的转换是由若干个域名服务器程序完成的,这种域名到IP地址的转换过程叫做域名解析。域名服务器程序在专有的主机上运行,运行这种程序的主机称为域名服务器。 域名解析的过程:DNS可进行域名到IP地址的解析,也可以将IP地址反向解析为域名。主机向本地域名服务器查询一般采用递归查询,本地域名服务器向根域名服务器查询优先采用迭代查询,从请求主机到本地域名服务器的查询是递归查询,而其余的查询是迭代查询。 为了提高DNS的查询效率,并减轻根域名服务器的负荷和减少因特网上的DNS查询报文数,在域名服务器中广泛使用了高速缓存,高速缓存用来存放最近查询过的域名以及从何处获取域名映射信息的记录。

统一资源定位符URL URL相当于一个文件名在网络访问的扩展。 URL通常形式由以下四个部分组成: <协议>://<主机>:<端口号>/<路径> 常见的有HTTP协议,如: http://www.code0.cn 在上面这个示例中,http协议默认的端口号为80,所以可以省略不写,主机号为域名,由DNS负责查找主机的IP地址,路径若默认不写一般访问的是该站点根目录上的index.html或其他以index.*的文件

超文本传送协议HTTP HTTP协议定义了浏览器怎样向万维网服务器请求万维网文档。 HTTP协议本身是一个无状态协议,即HTTP不要求服务器保存客户的任何状态信息。 HTTP/1.0协议采用非持续连接方式,即一次请求/响应对应一个TCP连接,在非持续连接方式中,每次浏览器请求一个文件都要与服务器建立TCP连接,当收到响应后就立即关闭连接。 HTTP/1.1协议使用持续连接,所谓持续连接就是万维网服务器在发送响应后仍然保持这条连接,使同一个客户和该服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文。HTTP/1.1协议的持续连接还可以使用流水线方式进行工作,即浏览器在收到HTTP响应报文之前就能连续发送多个请求报文,这样的请求报文达到服务器后,服务器就会发回对应的响应报文,流水线工作方式使TCP连接中的空闲时间减少,提高了下载文档的效率。

扩展阅读:

维基百科TCP传输控制协议

百度百科TCP传输控制协议