计算机网络知识整理

计算机网络

计算机网络的功能:连通、共享

互联网(Internet、因特网): 指由APPANET发展而来、采用 TCP/IP 协议族作为通信的规则的特定的计算机网络

任意把几个计算机网络互连起来(不管采用什么协议),并能够相互通信,这样构成的是一个互连网 (internet),而不是互联网 (Internet)。

计算机网络按作用范围分类

  • 广域网 WAN (Wide Area Network):作用范围通常为几十到几千公里。
  • 城域网 MAN (Metropolitan Area Network):作用距离约为 5~50 公里。
  • 局域网 LAN (Local Area Network) :局限在较小的范围(如 1 公里左右)。
  • 个人区域网 PAN (Personal Area Network) :范围很小,大约在 10 米左右。

以太网:是当今现有局域网采用的通用通信协议标准,组建于七十年代早期。Ethernet(以太网)是一种传输速率为10Mbps的常用局域网(LAN)标准。在以太网中,所有计算机被连接一条同轴电缆上,采用具有冲突检测的载波感应多处访问(CSMA/CD)方法,采用竞争机制和总线拓朴结构。以太网指的是在局域网内传输数据的方法和模式。

主机之间的通信模式:客户端/服务器模式(C/S)Client/Server;浏览器/服务器模式(B/S)Browser/Server;对等模式(P2P)Peer-to-Peer

计算机网络:一些互相连接的、自治的计算机的集合。

网络协议:为进行网络中的数据交换而建立的规则、标准或约定。主要由语法、语义、同步三个要素组成。

  • 语法:数据与控制信息的结构或格式
  • 语义:需要发出何种控制信息,完成何种动作以及做出何种响应
  • 同步:事件实现顺序的详细说明

协议:对等实体间进行通信的规则,协议必须能应付各种可能的情况。协议是水平的

服务:下层为上层提供服务。上下层实体进行信息交互的地方称为服务访问点SAP。服务是垂直的

OSI的七层协议:物理层,数据链路层,网络层,运输层,会话层,表示层,应用层。

TCP/IP的四层协议:网络接口层,网际层IP,运输层,应用层。

五层协议:物理层,数据链路层,网络层,运输层,应用层。

原理体系结构中各层的作用:

  • 应用层:直接为用户的应用进程提供特定的服务。
  • 运输层:负责向两个主机中进程之间的通信提供通用的数据传输服务。运输层有复用和分用的功能。运输层提供端到端的通信服务。
  • 网络层:负责为分组交换网上的不同主机提供通信服务,其中包括封装成包和路由选择。网络层提供主机到主机的通信服务。
  • 数据链路层:将网络层交下来的IP数据报组装成帧,在两个相邻结点间的链路上“透明”地传送帧中的数据。链路层提供两相邻结点(点到点)的通信服务。
  • 物理层:透明地传送比特流。物理层要确定信号形式、物理接口规则。物理媒体不属于物理层,处于物理层的下面。

各层的协议数据单元:应用层(消息message)、运输层(段segment、数据报datagram)、网络层(分组packet)、链路层(帧frame)、物理层(bit信号)

网络设备:应用层(主机)、网络层(路由器)、链路层(交换机、网桥、网络适配器)、物理层(集线器、转发器、中继器、调制解调器),了解各设备的广播域与冲突域。


物理层

物理层的主要任务:确定与传输媒体的接口有关的一些特性;即机械特性,电气特性,功能特性,过程特性。 物理层可实现在传输媒体上透明地传送比特流。

  • 物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。
  • 物理层的作用是要尽可能地屏蔽掉不同传输媒体和通信手段的差异。
  • 用于物理层的协议也常称为物理层规程 (procedure)。

通信的三种方式:单向通信(单工),双向交替通信(半双工),双向同时通信(全双工)

基带信号:来自信源的(未经调制的)信号。

调制分为两大类:

  • 基带调制:仅对基带信号的波形进行变换,使它能够与信道特性相适应。变换后的信号仍然是基带信号。把这种过程称为编码 (coding)。
  • 带通调制:使用载波 (carrier)进行调制,把基带信号的频率范围搬移到较高的频段,并转换为模拟信号,这样就能够更好地在模拟信道中传输(即仅在一段频率范围内能够通过信道)

带通信号:经过载波调制后的信号 常用编码方式

  • 不归零制:正电平代表 1,负电平代表 0。
  • 归零制:正脉冲代表 1,负脉冲代表 0。
  • 曼彻斯特编码:位周期中心的向上跳变代表 0,位周期中心的向下跳变代表 1。但也可反过来定义。
  • 差分曼彻斯特编码:在每一位的中心处始终都有跳变。位开始边界有跳变代表 0,而位开始边界没有跳变代表 1。 调制:用高频率载波携带信号进行传输的过程。 最基本的二元制调制方法:调频,调幅,调相(载波的频率、振幅、相位携带信号进行传输)。

正交振幅调制 QAM (Quadrature Amplitude Modulation)

信道复用技术:在一个物理信道中实现多个逻辑信道,可同时传输多路信号。

  • 频分复用FDM:多路信号占用不同的频带进行多路复用。
  • 时分复用TDM:多路信号占用不同的时隙进行多路复用。
  • 统计时分复用STDM:按需动态分配时隙
  • 波分复用WDM:多路光信号采用不同波段的光载波进行多路复用,是光的频分复用
  • 密集波分复用DWDM:一根光纤上复用多路数的光载波信号。
  • 码分复用CDM:各用户使用经过特殊挑选的相互正交的码序列进行扩频通信,从而实现的多路复用。

因特网的宽带接入方法:ADSL、HFC、FTTx


数据链路层

数据链路层的主要任务:数据链路层将网络层IP数据报组装成帧,提供结点到结点的透明传输。

链路:是一条无源的点到点的物理线路段,中间没有任何其他的交换结点。
数据链路:除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。(现在最常用的方法是使用适配器(即网卡)来实现这些协议的硬件和软件。)

三个基本问题:封装成帧,透明传输,差错检测。

PPP协议

PPP协议:点对点协议,用于拨号电话线接入因特网。

PPP是为了在点对点物理链路(例如RS232串口链路、电话ISDN线路等)上传输OSI模型中的网络层报文而设计的,它改进了之前的一个点对点协议-SLIP协议–只能同时运行一个网络协议、无容错控制、无授权等许多缺陷,PPP是现在最流行的点对点链路控制协议。这种连接提供了同时的双向的全双工操作,并且假定数据包是按顺序投递的。PPP连接提供了一种广泛的解决办法,方便地将多种多样不同的值作为最大接收单元的值。

帧格式与HDLC相似,不同的是PPP是面向字符,HDLC是面向位的。PPP属于广域网范畴,MAC是局域网范畴,按实际情况和环境就选用不同的协议,PPP支持的网络结构只能是点对点,MAC支持多点对多点。 这类广域网协议,其帧的结构与以太网的完全不同,当然,PPPOE除外,因为PPPOE是基于以太网上的,而其它的如PPP,FR,X.25等却并不是。 PPP协议是目前广域网上应用最广泛的协议之一,它的优点在于简单、具备用户验证能力、可以解决IP分配等。

PPP协议是目前应用得最广的一种广域网协议,它主要由以下3部分组成:

  • 一个将 IP 数据报封装到串行链路的方法。(HDLC);
  • 用于建立、配置和检测数据链路连接的链路控制协议(LCP) ;
  • 用于建立和配置不同网络层协议的网络控制协议(NCP) 协议簇。

局域网的数据链路层

局域网最主要的特点是:

  • 网络为一个单位所拥有;
  • 地理范围和站点数目均有限。

局域网具有如下主要优点:

  • 具有广播功能,从一个站点可很方便地访问全网。局域网上的主机可共享连接在局域网上的各种硬件和软件资源。
  • 便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变。
  • 提高了系统的可靠性、可用性和残存性。

局域网的拓扑:星形,环形,总线,树形

局域网的数据链路层拆成两个子层:

  • 逻辑链路控制 LLC (Logical Link Control)子层;(作用不大)
  • 媒体接入控制 MAC (Medium Access Control)子层。

以太网提供的服务:

  • 以太网提供的服务是不可靠的交付,即尽最大努力的交付。
  • 当目的站收到有差错的数据帧时就丢弃此帧,其他什么也不做。差错的纠正由高层来决定。
  • 如果高层发现丢失了一些数据而进行重传,但以太网并不知道这是一个重传的帧,而是当作一个新的数据帧来发送

适配器

网络接口板又称为通信适配器 (adapter) 或网络接口卡 NIC (Network Interface Card),或“网卡”。

适配器的重要功能:

  • 进行串行/并行转换。

  • 对数据进行缓存。

  • 在计算机的操作系统安装设备驱动程序。

  • 实现以太网协议。

CSMA/CD协议

  • CSMA/CD 含义:载波监听多点接入 / 碰撞检测 (Carrier Sense Multiple Access with Collision Detection) 。
  • “多点接入”表示许多计算机以多点接入的方式连接在一根总线上。
  • “载波监听”是指每一个站在发送数据之前先要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞。
  • 总线上并没有什么“载波”。因此, “载波监听”就是用电子技术检测总线上有没有其他计算机发送的数据信号。
  • “碰撞检测”就是计算机边发送数据边检测信道上的信号电压大小。当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加)。当一个站检测到的信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞。所谓“碰撞”就是发生了冲突。因此“碰撞检测”也称为“冲突检测”。在发生碰撞时,总线上传输的信号产生了严重的失真,无法从中恢复出有用的信息来。每一个正在发送数据的站,一旦发现总线上出现了碰撞,就要立即停止发送,免得继续浪费网络资源,然后等待一段随机时间后再次发送。

争用期

  • 最先发送数据帧的站,在发送数据帧后至多经过时间 2 (两倍的端到端往返时延)就可知道发送的数据帧是否遭受了碰撞。
  • 以太网的端到端往返时延 2 称为争用期,或碰撞窗口。
  • 经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。

重要特性

  • 使用 CSMA/CD 协议的以太网不能进行全双工通信而只能进行双向交替通信(半双工通信)。

  • 每个站在发送数据之后的一小段时间内,存在着遭遇碰撞的可能性。

  • 这种发送的不确定性使整个以太网的平均通信量远小于以太网的最高数据率。

MAC层的硬件地址(Media Access Control):由48位,16进制的数字组成的地址。也就是网卡的物理地址。实际上就是适配器地址或适配器标识符EUI—48。 MAC地址,也称为物理地址、硬件地址,用来定义网络设备的位置。在OSI模型中,第三层网络层负责 IP地址,第二层数据链路层则负责 MAC地址。因此一个主机会有一个IP地址,而每个网络位置会有一个专属于它的MAC地址。

碰撞域:也称冲突域,在以太网中,如果某个一个CSMA/CD网络上的两台计算机在同时通信时会发生冲突,那么这个CSMA/CD网络就是一个冲突域。如果以太网中的各个网段以中继器连接,因为不能避免冲突,所以它们仍然是一个冲突域。但网桥可以隔离冲突域。

网桥

网桥工作在数据链路层,它根据 MAC 帧的目的地址对收到的帧进行转发。

网桥具有过滤帧的功能。**网桥可互连不同物理层、不同 MAC 子层和不同速率的局域网。**网桥由于存储转发增加了时延。

广播风暴:网桥并不隔离广播域,当网桥连接成较大的局域网时,会因传播过多的广播信息而产生网络拥塞。这就是所谓的广播风暴。VLAN可以隔离广播域。

以太网交换机是多端口的网桥。

以太网交换机

  • 以太网交换机实质上就是一个多接口的网桥。通常都有十几个或更多的接口。
  • 每个接口都直接与一个单台主机或另一个以太网交换机相连,并且一般都工作在全双工方式。
  • 以太网交换机具有并行性。能同时连通多对接口,使多对主机能同时通信。
  • 相互通信的主机都是独占传输媒体,无碰撞地传输数据。
  • 以太网交换机的接口有存储器,能在输出端口繁忙时把到来的帧进行缓存。
  • 以太网交换机是一种即插即用设备,其内部的帧交换表(又称为地址表)是通过自学习算法自动地逐渐建立起来的。
  • 以太网交换机使用了专用的交换结构芯片,用硬件转发,其转发速率要比使用软件转发的网桥快很多。
  • 以太网交换机的性能远远超过普通的集线器,而且价格并不贵。

优点

  • 用户独享带宽,增加了总容量。
  • 从共享总线以太网转到交换式以太网时,所有接入设备的软件和硬件、适配器等都不需要做任何改动。
  • 以太网交换机一般都具有多种速率的接口,方便了各种不同情况的用户。

网络层

网络层将分组从源主机传到目的主机;网络层提供网络互连。

网络层提供的两种服务:虚电路服务和数据报服务

网络层中间设备:路由器

网络层协议:ICMP、IGMP、IP、ARP

IP协议

IP是Internet Protocol(网际互连协议)的缩写,是TCP/IP体系中的网络层协议。设计IP的目的是提高网络的可扩展性:一是解决互联网问题,实现大规模、异构网络的互联互通;二是分割顶层网络应用和底层网络技术之间的耦合关系,以利于两者的独立发展。根据端到端的设计原则,IP只为主机提供一种无连接、不可靠的、尽力而为的数据报传输服务。

IP协议提供非可靠,无连接的数据报传输服务。

非可靠:这意味着它并不保证所要传输的数据一定会到达目的地。(当路由出错导致某个数据传输失败时,会丢掉此数据并发回一个ICMP信息回去。可靠性需要由更上层的协议提供,如TCP协议)。

无连接:这代表 IP datagram(数据报)在传输中没有连接起来,他们是一块一块各自分开的,分开独立处理。(比如需要向某个地方发送两个数据报A、B,他们两个有可能会经由不同的路径去到达目的地,有可能B要比A先到达)。

IP主要包含三方面内容:IP编址方案、分组封装格式及分组转发规则。

IP地址:分类的IP地址、子网掩码、掩码、CIDR、回环地址、私有地址(10/8,172.16/12,192.168/16)、网络地址与广播地址、单播地址与多播地址。

IP地址块的划分(从最大地址块进行划分):子网划分、超网;

路由器分组转发算法(IP数据报转发算法):

  • 从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N。
  • 若网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D;否则是间接交付,执行 (3)。
  • 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行 (4)。
  • 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行 (5)。
  • 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行 (6)。
  • 报告转发分组出错。

在划分子网情况下路由器转发分组的算法(IP数据报转发算法):

  • 从收到的分组的首部提取目的 IP 地址 D。
  • 先用各网络的子网掩码和 D 逐位相“与”,看是否和相应的网络地址匹配。若匹配,则将分组直接交付。否则就是间接交付,执行(3)。
  • 若路由表中有目的地址为 D 的特定主机路由,则将分组传送给指明的下一跳路由器;否则,执行 (4)。
  • 对路由表中的每一行,将子网掩码和 D 逐位相“与”。若结果与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行 (5)。
  • 若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;否则,执行 (6)。
  • 报告转发分组出错。

ARP协议

ARP,即地址解析协议,可以实现通过IP地址获得其物理地址。

工作流程:

  • ARP进程在本局域网上广播发送一个ARP请求分组;
  • 在本局域网上所有主机上运行的ARP进程都收到此ARP请求分组;
  • 主机B在ARP分组中见到自己的IP地址,就向主机A发送ARP响应分组,并写入自己的硬件地址;
  • 主机A收到主机B的ARP响应分组后,就在其ARP高速缓存中写入主机B的IP地址到硬件地址的映射。

IP地址通过ARP转变为物理地址。

ARP 用于解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题。
如果所要找的主机和源主机不在同一个局域网上,那么就要通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。

ARP的四种典型情况:

  • 发送方是主机,要把 IP 数据报发送到本网络上的另一个主机。这时用 ARP 找到目的主机的硬件地址。
  • 发送方是主机,要把 IP 数据报发送到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。
  • 发送方是路由器,要把 IP 数据报转发到本网络上的一个主机。这时用 ARP 找到目的主机的硬件地址。
  • 发送方是路由器,要把 IP 数据报转发到另一个网络上的一个主机。这时用 ARP 找到本网络上另一个路由器的硬件地址。剩下的工作由这个路由器来完成。

ICMP协议

  • 为了更有效地转发 IP 数据报和提高交付成功的机会,在网际层使用了网际控制报文协议 ICMP (Internet Control Message Protocol)。
  • ICMP 是互联网的标准协议。
  • ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。
  • 但 ICMP 不是高层协议(看起来好像是高层协议,因为 ICMP 报文是装在 IP 数据报中,作为其中的数据部分),而是 IP 层的协议。

ICMP 报文的种类有两种,即 ICMP 差错报告报文和 ICMP 询问报文。

ICMP 差错报告报文:

  • 终点不可达
  • 时间超过
  • 参数问题
  • 改变路由(重定向)(Redirect)

ICMP 询问报文:

  • 回送请求和回答报文
  • 时间戳请求和回答报文

ICMP的应用举例

  • Ping(ICMP 回送请求与回送回答报文)
  • Traceroute(ICMP 时间超过差错报告)

路由选择协议(简称路由协议)

自治系统 AS 的定义:在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量以确定分组在该 AS 内的路由,同时还使用一种 AS 之间的路由选择协议用以确定分组在 AS之间的路由。

现在对自治系统 AS 的定义是强调下面的事实:尽管一个 AS 使用了多种内部路由选择协议和度量,但重要的是一个 AS 对其他 AS 表现出的是一个单一的和一致的路由选择策略。

IGP (内部网关协议):自治系统内部使用的路由选择协议。
常用的IGP:

  • RIP:路由信息协议,是一种分布式的基于距离向量的路由选择协议。相邻路由器间定时交换各自的路由表。基于UDP(属于应用层协议)。

    优点:
    实现简单,开销较小。
    缺点:

    RIP 限制了网络的规模,它能使用的最大距离为 15(16 表示不可达)。

    路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。

    “坏消息传播得慢”,使更新过程的收敛时间过长。

  • OSPF:开放最短路径优先协议,是一种分布式的链路状态路由协议。链路状态改变时洪泛发送邻居信息。基于IP协议进行传输。

    OSPF 还规定每隔一段时间,如 30 分钟,要刷新一次数据库中的链路状态。
    由于一个路由器的链路状态只涉及到与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。因此当互联网规模很大时,OSPF 协议要比距离向量协议 RIP 好得多。
    OSPF 没有“坏消息传播得慢”的问题,据统计,其响应网络变化的时间小于 100 ms。

EGP (外部网关协议):不同自治系统间路由器交流路由选择信息的协议。
常用的EGP:
BGP:一种基于路径向量的路由选择协议。基于TCP(属于应用层协议)。

路由器

路由器的构成:路由选择部分(控制部分,核心构件是路由选择处理机)和分组转发部分(交换结构,一组输入端口,一组输出端口)。 路由器是一种典型的网络层设备。路由器是互联网中的关键设备。

  • 路由选择部分也叫做控制部分,其核心构件是路由选择处理机。路由选择处理机的任务是根据所选定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表。
  • 分组转发部分由三部分组成:交换结构 (switching fabric):又称为交换组织,其作用是根据转发表 (forwarding table) 对分组进行处理。一组输入端口,一组输出端口。

路由器的主要作用是:

  • 连通不同的网络。
  • 选择信息传送的线路。选择通畅快捷的近路,能大大提高通信速度,减轻网络系统通信负荷,节约网络系统资源,提高网络系统畅通率,从而让网络系统发挥出更大的效益来。

“转发”和“路由选择”的区别:

  • “转发”(forwarding) 就是路由器根据转发表将用户的 IP 数据报从合适的端口转发出去。
  • “路由选择”(routing) 则是按照分布式算法,根据从各相邻路由器得到的关于网络拓扑的变化情况,动态地改变所选择的路由。
  • 路由表是根据路由选择算法得出的。而转发表是从路由表得出的。
  • 在讨论路由选择的原理时,往往不去区分转发表和路由表的区别。

IGMP协议

  • IGMP 并非在互联网范围内对所有多播组成员进行管理的协议。
  • IGMP 不知道 IP 多播组包含的成员数,也不知道这些成员都分布在哪些网络上。
  • IGMP 协议是让连接在本地局域网上的多播路由器知道本局域网上是否有主机(严格讲,是主机上的某个进程)参加或退出了某个多播组。

IGMP的工作流程:

第一阶段:加入多播组。当某个主机加入新的多播组时,该主机应向多播组的多播地址发送 IGMP 报文,声明自己要成为该组的成员。本地的多播路由器收到 IGMP 报文后,将组成员关系转发给互联网上的其他多播路由器。

第二阶段:探询组成员变化情况。
因为组成员关系是动态的,因此本地多播路由器要周期性地探询本地局域网上的主机,以便知道这些主机是否还继续是组的成员。只要对某个组有一个主机响应,那么多播路由器就认为这个组是活跃的。但一个组在经过几次的探询后仍然没有一个主机响应,则不再将该组的成员关系转发给其他的多播路由器。

VPN

VPN 虚拟专用网:通过一个公用网络建立一个临时的、安全的连接,是一条穿过混乱的公用网络的安全、稳定的隧道。

NAT

NAT 网络地址转换:将私有(保留)地址转化为合法IP地址的转换技术,被广泛应用于各种类型Internet接入方式和各种类型的网络中。原因很简单,NAT不仅完美地解决了IP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。

网络地址转换的过程:

  • 内部主机 A 用本地地址 IPA 和互联网上主机 B 通信所发送的数据报必须经过 NAT 路由器。
  • NAT 路由器将数据报的源地址 IPA 转换成全球地址 IPG ,并把转换结果记录到NAT地址转换表中,目的地址 IPB 保持不变,然后发送到互联网。
  • NAT 路由器收到主机 B 发回的数据报时,知道数据报中的源地址是 IPB 而目的地址是 IPG 。
  • 根据 NAT 转换表,NAT 路由器将目的地址 IPG 转换为 IPA ,转发给最终的内部主机 A。

运输层

运输层为应用进程之间提供端到端的逻辑通信服务;运输层对接收到的报文进行差错检测。

  • 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。
  • 当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时,只有位于网络边缘部分的主机的协议栈才有运输层,而网络核心部分中的路由器在转发分组时都只用到下三层的功能。

各种运输层协议:TCP、UDP

硬件接口(interface):ADSL Modem、集线器、交换机、路由器等用于连接其他网络设备的接口。

(软件)端口(port):运输层使用端口(port)来区分应用进程。端口号的范围从0到65535

IP地址:给每个连接在Internet上的主机分配的一个32bit地址。

Socket:IP地址+端口号

套接字是应用进程和运输层协议之间的接口,是应用进程为了获得网络通信服务而与操作系统进行交互时使用的一种机制。在创建套接字时,需要设置若干参数,即一个数据结构。在通信前必须要绑定一些参数。

复用:应用层所有的进程都可以通过运输层再传送到IP层

分用:运输层从IP层收到数据后必须交付给指明的应用进程。

UDP

UDP 用户数据报协议:是 OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。 UDP 传送的数据单位协议是 UDP 报文或用户数据报。 简单、快速、可以广播与多播。

UDP 只在 IP 的数据报服务之上增加了很少一点的功能:

  • 复用和分用的功能
  • 差错检测的功能

UDP 的主要特点:

  • UDP 是无连接的,发送数据之前不需要建立连接,因此减少了开销和发送数据之前的时延。
  • UDP 使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表。
  • UDP 是面向报文的。UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。UDP 一次交付一个完整的报文。
  • UDP 没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。很适合多媒体通信的要求。
  • UDP 支持一对一、一对多、多对一和多对多的交互通信。
  • UDP 的首部开销小,只有 8 个字节,比 TCP 的 20 个字节的首部要短。

TCP

TCP 传输控制协议:是一种面向连接(连接导向)的、可靠的、基于字节流的运输层通信协议。TCP 传送的数据单位协议是 TCP 报文段(segment)。TCP 连接的端点叫做套接字 (socket) 或插口。

TCP 最主要的特点:

  • TCP 是面向连接的运输层协议。
  • 每一条 TCP 连接只能有两个端点 (endpoint),每一条 TCP 连接只能是点对点的(一对一)。
  • TCP 提供可靠交付的服务。
  • TCP 提供全双工通信。
  • 面向字节流:TCP 中的“流”(stream) 指的是流入或流出进程的字节序列。“面向字节流”的含义是:虽然应用程序和 TCP 的交互是一次一个数据块,但 TCP 把应用程序交下来的数据看成仅仅是一连串无结构的字节流。

可靠传输的工作原理

连续ARQ停止等待ARQ(效率低)
发送的分组数量一次发送多个分组一次发送一个分组
传输控制滑动窗口协议停等-等待
确认单独确认 + 累积确认单独确认
超时定时器每个发送的分组每个发送的分组
编号每个发送的分组每个发送的分组
重传回退N,多个分组一个分组

TCP可靠传输的实现:以字节为单位的滑动窗口;超时重传时间的选择;累计确认或选择确认SACK

TCP的流量控制:让发送方的发送速率不要太快,要让接收方来得及接收。接收方利用窗口字段控制发送方滑动窗口大小从而实现流量控制;必须考虑传输效率。流量控制通常是点对点通信量的控制,是个端到端的问题(接收端控制发送端)。

TCP的拥塞控制:防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。拥塞控制是一个全局性的过程,涉及到所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素。通过设置拥塞窗口cwnd的大小来影响发送方的发送窗口。 **发送窗口=min(接收窗口,拥塞窗口)**几种拥塞控制方法:慢开始;拥塞避免;快重传;快恢复。

TCP的运输连接管理:运输连接三个阶段:连接建立(三次握手);数据传送和连接释放(四次握手)。

三次握手:

  • 第一次:客户端向服务端发送初始序号seq=x、SYN请求标志
  • 第二次:服务端收到连接请求报文同意后,向客户端发送请求标志SYN、确认标志ACK、自己的序号seq=y、客户端的确认序号ack=x+1
  • 第三次:客户端向服务器发送ACK确认号、自己的序号seq=x+1、对方的确认号ack=y+1

四次挥手:

  • 第一次挥手:客户端发出释放报文FIN=1,自己序列号seq=u,进入FIN-WAIT-1状态
  • 第二次挥手:服务器收到客户端的释放请求后,发出ACK=1确认标志和客户端的确认号ack=u+1,自己的序列号seq=v,进入CLOSE-WAIT状态
  • 第三次挥手:客户端收到服务器确认结果后,进入FIN-WAIT-2状态。此时服务器发送释放FIN=1信号,确认标志ACK=1,确认序号ack=u+1,自己序号seq=w,服务器进入LAST-ACK(最后确认态)
  • 第四次挥手:客户端收到回复后,发送确认ACK=1,ack=w+1,自己的seq=u+1,客户端进入TIME-WAIT(时间等待)。客户端经过2个最长报文段寿命后,客户端CLOSE;服务器收到确认后,立刻进入CLOSE状态。

为什么三次握手和四次挥手?

  • 三次握手时,服务器同时把ACK和SYN放在一起发送到了客户端那里
  • 四次挥手时,当收到对方的 FIN 报文时,仅仅表示对方不再发送数据了但是还能接收数据,己方是否现在关闭发送数据通道,需要上层应用来决定,因此,己方 ACK 和 FIN 一般都会分开发送。(可能还有数据未发送完)

为什么客户端最后还要等待2MSL?

  • 客户端需要保证最后一次发送的ACK报文到服务器,如果服务器未收到,可以请求客户端重发,这样客户端还有时间再发,重启2MSL计时。

为什么不能用两次握手进行连接?

  • 3次握手完成两个重要的功能,既要双方做好发送数据的准备工作(双方都知道彼此已准备好),也要允许双方就初始序列号进行协商,这个序列号在握手过程中被发送和确认。
  • 现在把三次握手改成仅需要两次握手,死锁是可能发生的。

如果已经建立了连接,但是客户端突然出现故障了怎么办?

  • TCP还设有一个保活计时器,用来防止在TCP连接出现长时期的空闲。保活计时器 通常设置为2小时 。若服务器过了2小时还没有收到客户的信息,它就发送探测报文段。若发送了10个探测报文段(每一个相隔75秒)还没有响应,就假定客户出了故障,因而就终止该连接。

应用层

应用层是网络体系结构的最高层。应用层直接为用户的应用进程提供服务。

系统调用接口(应用编程接口API)是应用程序和操作系统之间接口。

各种应用层协议(DNS、HTTP、FTP、DHCP、SMTP、TELNET、POP3、IMAP、RIP、BGP)

DNS

DNS **域名系统:**是因特网使用的命名系统,用来把便于人们使用的机器名字转换为IP地址。

DNS协议是用来将域名转换为IP地址(也可以将IP地址转换为相应的域名地址)。 在Internet上域名与IP地址之间是一一对应的(或者一IP对应多个域名),域名虽然便于人们记忆,但机器之间只能互相认识IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS就是进行域名解析的服务器。

域名的结构由标号序列组成,各标号之间用点隔开:

… . 三级域名 . 二级域名 . 顶级域名

主域名服务器:为了提高域名服务器的可靠性,DNS域名服务器都把数据复制到几个域名服务器来保存,其中一个是主域名服务器,其余的是辅助域名服务器。

主机向本地域名服务器的查询一般都是采用递归查询;本地域名服务器向根域名服务器的查询通常都是迭代查询

  • 递归查询:本机向本地域名服务器发出一次查询请求,就静待最终的结果。如果本地域名服务器无法解析,自己会以DNS客户机的身份向其它域名服务器查询,直到得到最终的IP地址告诉本机
  • 迭代查询:本地域名服务器向根域名服务器查询,根域名服务器告诉它下一步到哪里去查询,然后它再去查,每次它都是以客户机的身份去各个服务器查询。

域名解析总体可分为一下过程:

  1. 输入域名后, 先查找自己主机对应的域名服务器,域名服务器先查找自己的数据库中的数据.
  2. 如果没有, 就向上级域名服务器进行查找, 依次类推
  3. 最多回溯到根域名服务器, 肯定能找到这个域名的IP地址
  4. 域名服务器自身也会进行一些缓存, 把曾经访问过的域名和对应的IP地址缓存起来, 可以加速查找过程

具体的解析全过程可参考:https://blog.csdn.net/m0_37812513/java/article/details/78775629

FTP

FTP文件传送协议:是因特网上使用的最广泛的文件传送协议,提供交互式访问,允许客户知名文件的类型与格式,并允许文件具有存取权限。

  • 文件传送协议 FTP 只提供文件传送的一些基本的服务,它使用 TCP 可靠的运输服务。
  • FTP 的主要功能是减少或消除在不同操作系统下处理文件的不兼容性。
  • FTP 使用客户服务器方式。一个 FTP 服务器进程可同时为多个客户进程提供服务。FTP 的服务器进程由两大部分组成:一个主进程,负责接受新的请求;另外有若干个从属进程,负责处理单个请求。

两个连接:

  • 控制连接在整个会话期间一直保持打开,FTP 客户发出的传送请求通过控制连接发送给服务器端的控制进程,但控制连接不用来传送文件。
  • 数据连接实际用于传输文件。服务器端的控制进程在接收到 FTP 客户发送来的文件传输请求后就创建“数据传送进程”和“数据连接”,用来连接客户端和服务器端的数据传送进程

两个端口:

  • 当客户进程向服务器进程发出建立连接请求时,要寻找连接服务器进程的熟知端口 (21),同时还要告诉服务器进程自己的另一个端口号码,用于建立数据传送连接。
  • 接着,服务器进程用自己传送数据的熟知端口 (20) 与客户进程所提供的端口号码建立数据传送连接。
  • 由于 FTP 使用了两个不同的端口号,所以数据连接与控制连接不会发生混乱。使协议更加简单和更容易实现。
    在传输文件时还可以利用控制连接(例如,客户发送请求终止传输)。

TFTP

  • TFTP (Trivial File Transfer Protocol) 是一个很小且易于实现的文件传送协议。
  • TFTP 使用客户服务器方式和使用 UDP 数据报,因此 TFTP 需要有自己的差错改正措施。
  • TFTP 只支持文件传输而不支持交互。
  • TFTP 没有一个庞大的命令集,没有列目录的功能,也不能对用户进行身份鉴别。

主要特点:

  • 每次传送的数据 PDU 中有 512 字节的数据,但最后一次可不足 512 字节。
  • 数据 PDU 也称为文件块 (block),每个块按序编号,从 1 开始。
  • 支持 ASCII 码或二进制传送。
  • 可对文件进行读或写。
  • 使用很简单的首部。

TELNET

  • TELNET 是一个简单的远程终端协议,也是互联网的正式标准。
  • 用户用 TELNET 就可在其所在地通过 TCP 连接注册(即登录)到远地的另一个主机上(使用主机名或 IP 地址)。
  • TELNET 能将用户的击键传到远地主机,同时也能将远地主机的输出通过 TCP 连接返回到用户屏幕。这种服务是透明的,因为用户感觉到好像键盘和显示器是直接连在远地主机上。

HTTP

WWW 万维网:是一个大规模的、联机式的信息储藏所。 万维网用链接的方法能非常方便地从互联网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息。这种访问方式称为“链接”。万维网是分布式超媒体 (hypermedia) 系统,它是超文本 (hypertext) 系统的扩充。超媒体与超文本的区别是文档内容不同。

URL统一资源定位符:是用于完整地描述Internet上网页和其他资源的地址的一种标识方法。其具体由四部分组成。

<协议>://<主机>:<端口>/<路径>

HTML 超文本标记语言:是一种制作万维网页面的标准语言,它消除了不同计算机之间信息交流的障碍。万维网的重要基础。

HTTP 超文本传送协议:是一个客户端(浏览器)和服务器端(Web服务器)请求和应答的标准,是面向事务的应用层协议,它是万维网上能够可靠的交换文件的重要基础。是用于从WWW服务器传输超文本到本地浏览器的传输协议.HTTP是一个应用层协议,由请求和响应构成,是一个标准的个客户端和服务器模型.

它的主要特点如下:

  1. 支持客户端/服务器模型

  2. 简单快速

    客户向服务器请求服务时,只需传送请求方法和路径。

  3. 灵活

  4. 无连接

    无连接的含义是限制每次连接只处理一个请求.服务器处理完客户端的请求,然后响应,并收到应答之后,就断开连接.这种方式可以节省传输时间。

  5. 无状态

    无状态是指协议 对于事务处理没有记忆能力。

HTTP请求/响应的步骤:客户端连接到Web服务器->发送Http请求->服务器接受请求并返回HTTP响应->释放连接TCP连接->客户端浏览器解析HTML内容

HTTP 有两类报文:

  • 请求报文——从客户向服务器发送请求报文。
  • 响应报文——从服务器到客户的回答。

HTTP 请求报文的一些方法:

在这里插入图片描述
GET与POST区别:

  • 使用GET方法查询字符串(键值对)被附加在URL地址后面一起发送到服务器。POST方法则不会。
  • GET请求会保存在浏览器的浏览记录中,POST请求不会保存在浏览器浏览记录中。
  • ​GET请求有长度限制,POST请求没有长度限制。
  • 以GET请求的URL能够保存为浏览器书签,以POST请求的URL无法保存为浏览器书签。
  • GET请求能够被缓存,POST请求不会被缓存。

总结:可以这么理解,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。比如之前提到的表单中的method=“post” 就是为了把表单信息提交到后台。因为POST请求的数据不会显示在地址栏中,也不会缓存下来或保存在浏览记录中,所以POST请求比GET请求安全,故有敏感信息的传递不能用GET方法。但也不是最安全的方式。如需要传送敏感数据,请使用加密方式传输

请求返回状态码:

  • 1xx 表示通知信息的,如请求收到了或正在进行处理。
  • 2xx 表示成功,如接受或知道了。
  • 3xx 表示重定向,表示要完成请求还必须采取进一步的行动。
  • 4xx 表示客户的差错,如请求中有错误的语法或不能完成。
  • 5xx 表示服务器的差错,如服务器失效无法完成请求。

HTTPS

HTTPS是指HTTP over SSL,即HTTP下加入SSL层。HTTPS是一种通过计算机网络进行安全通信的传输协议,经由HTTP进行通信,利用SSL/TLS建立全信道,加密数据包。HTTPS使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性。

HTTPS的建立过程:

  • 客户端发送请求到服务器端
  • 服务器端返回证书和公钥,公钥作为证书的一部分而存在
  • 客户端验证证书和公开密钥的有效性,如果有效,则生成共享密钥并使用公钥加密发送到服务器端
  • 服务器端使用私钥解密数据,并使用收到的共享密钥加密数据,发送到客户端
  • 客户端使用共享密钥解密数据
  • SSL加密建立

在这里插入图片描述
更加详细地了解HTTP与HTTPS:

https://blog.csdn.net/xiaoming100001/java/article/details/81109617

https://blog.csdn.net/guolin_blog/article/details/104546558

电子邮件协议

电子邮件系统:邮件发送协议(SMTP、MIME)、邮件读取协议(POP3、IMAP)

SMTP
  • SMTP 规定了在两个相互通信的 SMTP 进程交换信息的方法。
  • SMTP 基于 TCP 实现客户与服务器的通信。
  • SMTP 是一个基于文本的 (即 ASCII 码) 的协议。
  • SMTP 客户与服务器之间采用命令-响应方式进行交互。

SMTP通信的三个阶段:

  1. 连接建立:连接是在发送主机的 SMTP 客户和接收主机的 SMTP 服务器之间建立的。SMTP不使用中间的邮件服务器。
  2. 邮件传送
  3. 连接释放:邮件发送完毕后,SMTP 应释放 TCP 连接。

SMTP 有以下缺点:

  • SMTP 不能传送可执行文件或其他的二进制对象。
  • SMTP 限于传送 7 位的 ASCII 码。许多其他非英语国家的文字(如中文、俄文,甚至带重音符号的法文或德文)就无法传送。
  • SMTP 服务器会拒绝超过一定长度的邮件。
  • 某些 SMTP 的实现并没有完全按照 SMTP 标准。
MIME

通用互联网邮件扩充 MIME 并没有改动 SMTP 或取代它。MIME 的意图是继续使用目前的 [RFC 822] 格式,但增加了邮件主体的结构,并定义了传送非 ASCII 码的编码规则。

POP3
  • POP3 使用客户–服务器方式。

  • POP3 基于TCP实现客户与服务器的通信。

  • POP3 支持用户鉴别。

  • POP3 服务器删除被用户读取了的邮件
IMAP
  • IMAP 使用客户–服务器方式。
  • IMAP 基于TCP实现客户与服务器的通信。
  • IMAP是一个联机协议。

连接后只下载邮件首部(部分下载)。用户直接在IMAP服务器上创建和管理文件夹。用户可以搜索邮件内容。用户可以在不同的地方使用不同的计算机随时上网阅读和处理自己的邮件。允许收信人只读取邮件中的某一个部分。
缺点:要想查阅邮件,必须先联网。

DHCP

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),前身是BOOTP协议,是一个局域网的网络协议,使用UDP协议工作,统一使用两个IANA分配的端口:67(服务器端),68(客户端)。DHCP通常被用于局域网环境,主要作用是集中的管理、分配IP地址,使client动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。简单来说,DHCP就是一个不需要账号密码登录的、自动给内网机器分配IP地址等信息的协议。

DHCP协议的工作过程:

  1. DHCP 服务器被动打开 UDP 端口 67,等待客户端发来的报文。

  2. DHCP 客户从 UDP 端口 68,发送 DHCP 发现报文 DHCPDISCOVER。

  3. 凡收到 DHCP 发现报文的 DHCP 服务器都发出 DHCP 提供报文 DHCPOFFER,因此DHCP 客户可能收到多个 DHCP 提供报文 。

  4. DHCP 客户从几个 DHCP 服务器中选择其中的一个,并向所选择的 DHCP 服务器发送 DHCP 请求报文 DHCPREQUEST。

  5. 被选择的 DHCP 服务器发送确认报文DHCPACK,进入已绑定状态,并可开始使用得到的临时 IP 地址了。

  6. 租用期过了一半(T1 时间到),DHCP 发送请求报文 DHCPREQUEST,要求更新租用期。

    DHCP 客户现在要根据服务器提供的租用期 T 设置两个计时器 T1 和 T2,它们的超时时间分别是 0.5T 和 0.875T。当超时时间到就要请求更新租用期。

  7. DHCP 服务器若同意,则发回确认报文 DHCPACK。DHCP 客户得到了新的租用期,重新设置计时器。

  8. DHCP 服务器若不同意,则发回否认报 DHCPNACK。这时 DHCP 客户必须立即停止使用原来的 IP 地址,而必须重新申请 IP 地址(回到步骤 ❷)。

    若 DHCP 服务器不响应步骤 ❻ 的请求报文 DHCPREQUEST,则在租用期过了 87.5% 时,DHCP 客户必须重新发送请求报文 DHCPREQUEST(重复步骤 ❻),然后又继续后面的步骤。

  9. DHCP 客户可随时提前终止服务器所提供的 租用期,这时只需向 DHCP 服务器发送释 放报文 DHCPRELEASE 即可。

通过DHCP协议获得IP地址:

#Linux
dhclient -r eth0 #释放       		
dhclient -v eth0 #可看配置过程	
#Windows
ipconfig/release #释放 
ipconfig/renew  #配置

SNMP

简单网络管理协议(SNMP)是TCP/IP协议簇的一个应用层协议,工作在UDP 161端口,指导思想就是要尽可能简单。用于监控目标设备的操作系统、硬件设备、服务应用、软硬件配置、网络协议状态、设备性能及资源利用率、设备报错事件信息、应用程序状态等软硬件信息。

SNMP的通信字符串主要包含两类命令:GET命令,SET命令。

  • GET命令从设备读取数据,这些数据通常是操作参数,例如连接状态、接口名称等。
  • SET命令允许设置设备的某些参数,这类功能一般有限制,例如关闭某个网络接口、修改路由器参数等功能。
  • 但很显然,GET、SET命令都可能被用于拒绝服务攻击(DoS)和恶意修改网络参数。

SNMP 的网络管理由三个部分组成:

  • SNMP 本身

    SNMP 定义了管理站和代理之间所交换的分组格式。所交换的分组包含各代理中的对象(变量)名及其状态(值)。SNMP 负责读取和改变这些数值。

  • 管理信息结构 SMI (Structure of Management Information)

    SMI 定义命名对象和定义对象类型(包括范围和长度)的通用规则,以及把对象和对象的值进行编码的规则。

  • 管理信息库 MIB (Management Information Base)

    MIB 在被管理的实体中创建命名对象,并规定其类型。管理程序使用 MIB 中的信息,对网络进行管理。

常见的端口与服务

在这里插入图片描述

端口服务说明
21FTPFTP服务所开放的端口,用于上传、下载文件。
22SSHSSH端口,用于通过命令行模式或远程连接软件(例如PuTTY、Xshell、SecureCRT等)连接Linux实例
23TelnetTelnet端口,用于Telnet远程登录ECS实例。
25SMTPSMTP服务所开放的端口,用于发送邮件。基于安全考虑,ECS实例25端口默认受限,如需解封
53DNS用于域名解析服务器(Domain Name Server,简称DNS)协议。如果在安全组出方向实行白名单方式,需要放行53端口(UDP协议)才能实现域名解析。
80HTTP用于HTTP服务提供访问功能,例如,IIS、Apache、Nginx等服务。
110POP3用于POP3协议,POP3是电子邮件收发的协议。
143IMAP用于IMAP(Internet Message Access Protocol)协议,IMAP是用于电子邮件的接收的协议。
443HTTPS用于HTTPS服务提供访问功能。HTTPS是一种能提供加密和通过安全端口传输的一种协议。
1433SQL ServerSQL Server的TCP端口,用于供SQL Server对外提供服务。
1434SQL ServerSQL Server的UDP端口,用于返回SQL Server使用了哪个TCP/IP端口。
1521OracleOracle通信端口,ECS实例上部署了Oracle SQL需要放行的端口。
3306MySQLMySQL数据库对外提供服务的端口。
3389Windows Server Remote Desktop ServicesWindows Server Remote Desktop Services(远程桌面服务)端口,可以通过这个端口使用软件连接Windows实例。
8080代理端口同80端口一样,8080端口常用于WWW代理服务,实现网页浏览。如果您使用了8080端口,访问网站或使用代理服务器时,需要在IP地址后面加上:8080。安装Apache Tomcat服务后,默认服务端口为8080。
137、138、139NetBIOS协议137、138为UDP端口,通过网上邻居传输文件时使用的端口。139通过这个端口进入的连接试图获得NetBIOS/SMB服务。NetBIOS协议常被用于Windows文件、打印机共享和Samba。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值