zoukankan      html  css  js  c++  java
  • 网络 基础知识笔记

    1.物理层
    网络由若干结点和连接这些结点的链路组成,网络把许多计算机连接在一起,而因特网则把许多网络连接在一起
    因特网服务提供商ISP(Internet Service Provider)
    网络接入点NAP(Network Access Point)NAP又称对等点(peering point)表示接入到NAP的设备不存在从属关系而都是平等的。
    RFC(Request For Comments)请求评论。所有的因特网标准都是以RFC形式在因特网上发表。
    在网络边缘的端系统中运行的程序之间的通信方式通常可划分为两大类:客户端服务器方式(C/S方式)和对等方式(P2P9(peer 2 peer)方式).实际上,对待连接方式从本质上看仍然是使用客户服务器方式,只是对待连接中的每个主机即是客户同时又是服务器
     
    宽带接入技术:
    1.xDSL 用数字技术对现有的模拟电话用户线进行改造,使它能够承载宽带业务。DSL(Digital Subscriber Line)
    2.HFC网光纤同轴混合网,具有很宽的频带,利用有相当大的覆盖面的有线电视网
    3.FTTx技术(光纤到。。Fiber To The ..)
     
    2.链路层
    数据链路(data link):除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
     
    一般的网络适配器都包含了数据链路层和物理层这两层功能
     
    点对点信道的数据链路层的协议数据单元---帧
    数据链路层把网络层交下来的数据构成发送到链路上,以及把接收到的中的数据取出并上交给网络层。在因特网中,网络层协议数据单元就是IP数据报(或简称为数据报分组)
     
    封装成帧是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。
     
    点对点数据链路层协议PPP(point to point protocol):
    PPP协议就是用户计算机和ISP进行通信所使用的数据链路层协议。
    PPP协议的组成:
    1.一个将IP数据报封装到串行链路的方法。PPP既支持异步(无奇偶检验的8x比特数据),也支持面向比特的同步链路。IP数据报在PPP帧中就是其信息部分。这个信息部分的长度受最大传输单元MTU的限制
    2.一个用来建立,配置和测试数据链路连接的链路控制协议LCP(Link Control Protocol)通信的双方可协商一些选项,在RFC1661中定义了11种类型的LCP分组
    3.一套网络控制协议NCP(Network Control Protocol),其中的每一个协议支持不同的网络层协议,如IP,OSI的网络层,DECnet,以及AppleTalk等
     
    在计算机的适配器上装有处理器和存储器(包括RAM和ROM),适配器和局域网之间的通信是通过电缆或双绞线以串行传输方式进行的,而适配器和计算机之间的通信则是通过计算机主板上的I/O总线以并行传输方式进行的。因此适配器的一个重要功能就是进行数据串行传输和并行传输的转换。由于网络上的数据率和计算机总线上的数据并不相同,因此在适配器中必须装有对数据进行缓存的存储芯片。如果适配器是另外装在主板上的,则还要装驱动程序,驱动程序会告诉适配器,应当从存储器的什么位置上把多长的数据块发送到局域网,或者应当在存储器的什么位置上把局域网传送过来的数据块存储下来。适配器还要能够实现以太网协议。
     
    注意计算机的硬件地址就在适配器的ROM中,而计算机的软件地址--IP地址则在计算机的存储器中。计算机通过适配器和局域网通信。
     
    局域网的数据链路层在公共总线上使用CSMA/CD协议(多点接入,载波监听,碰撞检测)
    在数据链路层扩展以太网要使用网桥。网桥工作在数据链路层,它根据MAC帧的目的地址对收到的帧进行转发和过滤。
     
    网桥靠转发表来转发帧。转发表也叫做转发数据库路由目录网桥是通过内部的接口管理软件和网桥协议实体来完成操作
     
    3.网络层
    因特网采用与电信网不同的设计思路:网络层向上只提供简单灵活的,无连接的,尽最大努力交付的数据报服务。网络在发送分组时不需要先建立连接。每个分组(也就是IP数据报)独立发送,与其前后的分组无关(不进行编号)。网络层不提供服务质量的承诺。也就是说所传送的分组可能出错,丢失,重复和失序(即不按序到达终点),当然也不保证分组交付的时限。由于传输网络不提供端到端的可靠传输服务,这就使网络中的路由器可以做得比较简单,而且价格低廉(与电信网的交换机相比较)。如果主机(即端系统)中的进程之间的通信需要是可靠的,那么就由网络的主机的运输层负责(包括差错处理,流量控制等)。采用这种设计思路的好处是:网络的造价大大降低,运行方式灵活,能够适应多种应用。
     
    网络协议IP,与IP协议配套使用的还有4个协议:
    地址解析协议ARP(Address Resolution Protocol)
    逆地址解析协议RARP(Reverse Address Resolution Protocol)
    网际控制报文协议ICMP(Internet Control Message Protocol)
    网际组管理协议IGMP(Internet Group Management Protocol)
     
    没有一种单一的网络能够适应所有用户的需求。在市场中总是有很多种不同性能,不同网络协议的网络,供不同用户选用。将网络互相连接起来要使用一些中间设备,根据中间设备所处的层次,可以有以下4种设备:
    1.物理层使用的中间设备叫转发器(repeater)
    2.数据链路层使用的中间设备叫网桥桥接器(bridge)
    3.网络层使用的中间设备叫路由器(router)
    4.在网络层以上使用的中间设备叫网关(gateway),用网关连接两个不兼容的系统需要在高层进行协议的转换。
     
    实际上IP地址是标志一个主机(或路由器)和一条链路的接口,当一个主机同时连接到两个网络时,该主机就必须同时具有两个相应的IP地址,其网络号必须是不同的,这种主机称为多归属主机(multihomed host).由于一路由器至少应当连接到两个网络,因此一个路由器至少应当有两个不同的IP地址。
     
    物理地址是数据链路层和物理层使用的地址,而IP地址是网络层和以上各层使用的地址,是一种逻辑地址(称IP地址为逻辑地址是因为IP地址是用软件实现的)
     
    在发送数据时,数据从高层下到低层,然后才到通信链路上传输。使用IP地址的IP数据报一旦交给了数据链路层,就被封装成MAC帧了。MAC帧在传送时使用的源地址和目的地址都是硬件地址,这两个硬件地址都写在MAC帧的首部中。
     
    IP地址放在IP数据报的首部,而硬件地址则放在MAC帧的首部。在网络层和网络层以上使用的是IP地址,而数据链路层及以下使用的是硬件地址。数据链路层看不见数据报的IP地址。
     
    MAC帧在不同网络上传送时,其MAC帧首部中的源地址和目的地址要发生变化。
     
    地址解析协议ARP,找出IP地址的物理地址
    逆地址解析协议RARP,根据物理地址解析出IP地址
     
    网络层使用的是IP地址,但在实际网络的链路上传送数据帧时,最终是必须使用该网络的硬件地址。但IP地址与网络的硬件地址并没有直接的关系,而且网络上经常会加入新的主机或撤走一些主机,网络适配器也会由于故障改变。地址解析协议ARP解决这个问题的方法是在主机ARP高速缓存中存放一个从IP地址到硬件地址的映射表,并且这个映射表还经常动态更新(新增或超时删除)。每个主机都设有一个ARP高速缓存(ARP cache),里面有本局域网上的各主机和路由器的IP地址到硬件地址的映射表,这些都是该主机目前知道的一些地址。
    主机怎么知道这些地址呢?
    当主机A要向本局域网上的某个主机B发送IP数据报时,就先在其ARP高速缓存中查看有无主机B的IP地址。如有,就在ARP高速缓存中查出其对应的硬件地址,再把这个硬件地址写入到MAC帧,然后通过局域网把该MAC帧发往此硬件地址。也有可能查不到主机B的IP地址的项目,这可能是主机B才入网,也可能是主机A刚刚加电,其高速缓存还是空的。在这种情况下,主机A自动运行ARP,然后按以下步骤找出主机B的硬件地址。
    1.ARP进行在本局域网上广播发送一个ARP请求分组,发送内容为自己的IP及硬件地址,要查找的硬件地址的IP
    2.在本局域网上的所有主机运行的ARP进程都收到此ARP请求分组
    3.主机B在ARP请求分组中见到自己的IP地址,就向主机A发送ARP响应分组(ARP响应分组是单播,即从一个源地址到目的地址)
    4.主机A收到主机B的ARP响应分组后,就在其ARP高速缓存中定入主机B的地址到硬件地址的映射。
     
    可见ARP高速缓存非常有用,如果不使用ARP高速缓存,那么任何一个主机只要进行一次通信,就必须在网络上用广播方式发送ARP请求分组,这就使网络上的通信量大大增加。
     
    ARP把保存在高速缓存中的每一个映射地址项目都设置了生存时间,凡超过时间的项目就从高速缓存中删除掉。
    请注意,ARP是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。
     
    从IP地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的。只要主机或路由器要和本网络上的另一个已知IP地址的主机或路由器进行通信,ARP协议就会自动把这个IP地址解析为链路层所需要的硬件地址。
    下面为使用ARP的4种典型情况:
    1.发送方是主机,要把IP数据报发送到本网络上的另一个主机,这时用ARP找到目的主机的硬件地址
    2.发送方是主机,要把IP数据报发送到另一个网络上的一个主机,这时用ARP找到本网络上的一个路由器的硬件地址,剩下的工作由这个路由器来完成
    3.发送方是路由器,要把IP数据报转发到本网络上的一个主机。这时用ARP找到目的主机的硬件地址
    4.发送方是路由器,要把IP数据报转发到另一个网络上的一个主机。这时用ARP找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。
     
    为什么 我们不直接使用硬件地址进行通信,而是要使用抽象的IP地址并调用ARP来寻找硬件地址?
    由于全世界存在着各式各样的网络,它们使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此由用户或用户主机来完成这项工作几乎是不可能的事,但统一的IP地址把这个复杂的问题解决了。连接到因特网的主机只要拥有统一的IP地址,它们之间的通信就像连接在同一个网络上那样简单方便,上述的调用ARP的复杂过程都是由计算机软件自动进行的,对用户来说是看不见这种调用过程的。
     
    IP数据报格式:
     
     
    (1)版本 占4位,指IP协议的版本。通信双方使用的IP协议版本必须一致。目前广泛使用的IP协议版本号为4(即IPv4)。IPv6在推广阶段。
    (2)首部长度 占4位,可表示的最大十进制数值是15。请注意,这个字段所表示数的单位是32位字长(1个32位字长是4字节),因此,当IP的首部长度为1111时(即十进制的15),首部长度就达到60字节。当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。因此数据部分永远在4字节的整数倍开始,这样在实现IP协议时较为方便。首部长度限制为60字节的缺点是有时可能不够用。但这样做是希望用户尽量减少开销。最常用的首部长度就是20字节(即首部长度为0101),这时不使用任何选项。
    (3)区分服务 占8位,用来获得更好的服务。这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。1998年IETF把这个字段改名为区分服务DS(Differentiated Services)。只有在使用区分服务时,这个字段才起作用。
    (4)总长度 总长度指首部和数据之和的长度,单位为字节。总长度字段为16位,因此数据报的最大长度为2^16-1=65535字节。
    在IP层下面的每一种数据链路层都有自己的帧格式,其中包括帧格式中的数据字段的最大长度,这称为最大传送单元MTU(Maximum Transfer Unit)。当一个数据报封装成链路层的帧时,此数据报的总长度(即首部加上数据部分)一定不能超过下面的数据链路层的MTU值。当数据报长度超过网络所容许的最大传送单元MTU时,就必须把过长的数据报进行分片后才能在网络上传送(见后面的“片偏移”字段)。这时,数据报的首部中的“总长度”字段不是指未分片前的数据报长度,而是指分片后的每一个分片的首部长度与数据长度的总和。
    (5)标识(identification) 占16位。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。但这个“标识”并不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。
    (6)标志(flag) 占3位,但目前只有2位有意义。
    ● 标志字段中的最低位记为MF(More Fragment)。MF=1即表示后面“还有分片”的数据报。MF=0表示这已是若干数据报片中的最后一个。
    ● 标志字段中间的一位记为DF(Don’t Fragment),意思是“不能分片”。只有当DF=0时才允许分片。
    (7)片偏移 占13位。片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。也就是说,相对用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。这就是说,每个分片的长度一定是8字节(64位)的整数倍。
    (8)生存时间 占8位,生存时间字段常用的的英文缩写是TTL(Time To Live),表明是数据报在网络中的寿命。由发出数据报的源点设置这个字段。其目的是防止无法交付的数据报无限制地在因特网中兜圈子,因而白白消耗网络资源。最初的设计是以秒作为TTL的单位。每经过一个路由器时,就把TTL减去数据报在路由器消耗掉的一段时间。若数据报在路由器消耗的时间小于1秒,就把TTL值减1。当TTL值为0时,就丢弃这个数据报。后来把TTL字段的功能改为“跳数限制”(但名称不变)。路由器在转发数据报之前就把TTL值减1.若TTL值减少到零,就丢弃这个数据报,不再转发。因此,现在TTL的单位不再是秒,而是跳数。TTL的意义是指明数据报在网络中至多可经过多少个路由器。显然,数据报在网络上经过的路由器的最大数值是255.若把TTL的初始值设为1,就表示这个数据报只能在本局域网中传送。
    (9)协议 占8位,协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程。常用协议和相应字段值如下:
    协议名    ICMP    IGMP    TCP    EGP    IGP    UDP    IPv6    OSPF
    协议字段值    1    2            6        8        9        17        41        89
    (10)首部检验和 占16位。这个字段只检验数据报的首部,但不包括数据部分。这是因为数据报每经过一个路由器,路由器都要重新计算一下首部检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。不检验数据部分可减少计算的工作量。
    (11)源地址 占32位。
    (12)目的地址 占32位。
     
     
    IP转发分组流程:
    在互联网上转发分组时,是从一个路由器转发到下一个路由器
    在路由表中,对每一条路由最主要的是以下两个信息:目的网络地址,下一跳地址
     
    分组转发算法如下:
    1.从数据报的首部提取目的主机IP地址D,得出目的网络地址(目的网络路由地址)为N.
    2.若N就是与此路由器直接相连的某个网络地址,则进行直接交付,不需要再经过其他的路由器,直接把数据报交付给目的主机(这里包括把目的主机地址D转换为具体的硬件地址,把数据报封装成MAC帧,再发送此帧),否则就间接交付,执行3
    3.若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表指明的下一跳路由器,否则,执行4
    4.若路由表中有到达网络N的路由,则把数据报传送给路由表中所指明的下一跳路由器,否则,执行5
    5.若路由表中有一个默认路由,则把数据报传送给路由表中指明的默认路由器,否则执行6
    6.报告转发分组出错。
     
    无分类编址CIDR(构造超网)
    ----------------------网际控制报文协议ICMP(Internet Message Protocol)
    ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。ICMP是因特网的标准协议,但ICMP不是高层协议,而是IP层的协议。ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去。
     
    ICMP报文的种类:
    ICMP报文的种类有两种:即ICMP差错报告报文ICMP询问报文
    ICMP报文类型
     
     
    ICMP差错报告报文共有5种:
    1.终点不可达    当路由器或主机不能交付数据报时就向源点发送终点不可达报文
    2.源点抑制        当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢
    3.时间超过        当路由器收到生存时间为零的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把自己收到的数据报片丢弃,并向源点发送时间超过报文。
    4.参数问题        当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。
    5.改变路由(重定向)    路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)
     
    --因特网的路由选择协议
    路由选择协议主要作用也就是路由表中的路由是怎样得出的
    因特网采用的路由选择协议主要是自适应的(即动态的),分布式路由选择协议。由于以下两个原因,因特网采用分层次路由选择协议:
    1.因特网规模非常大,如果让所有路由器知道所有的网络怎样到达,则这种路由表非常大,处理起来也太花时间,而所有这些路由器之间交换路由信息所需的宽带就会使因特网通信链路饱和。
    2.许多单位不愿意外界了解自己单位网络的布局细节和本部门所采用的路由选择协议,但同时还希望连接到因特网上。
     
    在目前的因特网中,一个大的ISP就是一个自治系统, 这样因特网就把路由选择协议划分为两大类:
    1.内部网关协议IGP(Interior Gateway Protocol)一个自治系统内部使用的路由选择协议,目前这类选择较多的有RIP和OSPF协议 
    2.外部网关协议EGP(External Gateway Protocol) 若源主机和目的主机处在不同的自治系统中(这两个自治系统可能使用不同的内部网关协议),当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议EGP.目前使用最多的是BGP的版本4
     
    路由器:
    是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。整个路由器结构可分为两在部分:路由选择部分分组转发部分。路由选择部分也叫控制部分,其核心构件是路由选择处理机。路由选择处理机的任务是根据所选定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表。路由器的输入和输出的功能和传统的操作系统中的I/O设备一样。路由器处理机从分组首部提取目的地址,查找路由表,再将分组复制到合适的输出端口的缓存中。
     
    --虚拟专用网VPN和网络地址转换NAT
    由于IP地址的紧缺,在许多情况下,很多主机主要还是和本机构内的计算机进行通信,一个机构内部的计算机通信也是采用TCP/IP协议,那么从原则上,让这些计算机使用仅在本机构有效的IP地址(这种地址称为本地地址)而不需要向因特网的管理机构申请全球唯一的IP地址。这样可以大大节省全球IP地址资源。
    在因特网中的所有路由器,对目的地址是专用地址(本地地址)的数据报一律不进行转发。
    有时一个很大的机构有许多部门分布在相距较远的一些地点,而在每个地点都有自己的专用网。如果这些分布在不同地点的专用网需要经常进行通信。这时,可以有两种方法。第一种方法是租用电信公司的通信线路为本机专用。这种方法简单,但租金昂贵。第二种方法是利用公用的因特网作为本机构专用网之间的通信载体,这样的专用网又称为虚拟专用网VPN(Virtual Private Network).如果专用网不同网点之间的通信必须经过公用的网络,但又有保密的要求,那么所有通过因特网传送的数据都必须加密。
    网络地址转换NAT(Network Address Translation)
    当NAT路由器具有n个全球IP地址时,专用网内最多可以同时有n个主机接入到因特网。这样可以使专用网内较多数量的主机,轮流使用NAT路由器有限数量的全球IP地址。在传送时,NAT路由器负责转换包的源地址为全球IP地址
    为了更加有效地利用NAT路由器上的全球IP地址,现在常用的NAT转换表把运输层的端口号也利用上。这样,就可以使多个拥有本地地址的主机,共用一个NAT路由上的全球IP地址,因而可以同时和因特网上的不同主机进行通信。使用端口号的NAT也叫作网络地址与端口号转换NAPT(Network Address and Port Translation)
     
    4.运输层
    运输层最重要的两种协议:UDP和TCP.TCP的各种机制(面向连接的可靠服务,流量控制,拥塞控制等)
    --进程之间的通信
        从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时,只有主机的协议才有运输层,而网络核心部分的路由器在转发分组时都只用到下三层的功能。
     
     从IP层来说,通信的两端是两个主机。IP数据报的首部明确地标志了这两个主机的IP地址。但“两个主机之间的通信”这种说法还不够清楚。这是因为,真正进行通信的实体是在主机中的进程,是这个主机中的一个进程和另一个主机的一个进程在交换数据(即通信)。严格来说,两个主机进行通信就是两个主机的应用进程互相通信。
    从运输层的角度看,通信真正端点并不是主机而是主机中的进程。在一个主机中经常有多个应用进程同时分别和另一个主机中的多个应用进程通信。这就需要运输层有一个很重要的功能---复用(multiplexing)和分用(demultiplexing).复用指发送方不同的应用进程都可以使用同一个运输层协议传送数据(当然需要加上适当的首部),而“分用”是指接收方的运输层在剥去报文的首部后能够把这些数据正确交付到目标应用进程
     
    从这可看出,网络层是为主机之间提供逻辑通信,而运输层为应用进程之间提供端到端的逻辑通信。运输层还要对收到的报文进行差错检测
        根据应用程序的不同需要,运输层需要有两种不同的运输协议,即面向连接的TCP和无连接的UDP
    TCP/IP运输层的两个主要协议都是因特网的正式标准
    1.用户数据报协议UDP(User Datagram Protocol)
    2.传输控制协议TCP(Transmission Control Protocol)
    UDP在传送数据之前不需要先建立连接。TCP则面向连接服务,在传送数据之前必须先建立连接,数据传送结束后要释放连接。TCP不提供广播或多播服务。
     
    使用UDP和TCP协议的各种应用和应用层协议
        应用    应用层协议  运输层协议
    1  名字转换    DNS      UDP
    2  文件传送    TFTP      UDP
    3  路由选择协议   RIP      UDP
    4  IP地址配置    BOOTP,DHCP  UDP
    5  网络管理    SNMP      UDP
    6  远程文件服务器  NFS      UDP
    7  IP电话      专用协议    UDP
    8  流式多媒体通信  专用协议    UDP
    9  多播      IGMP       UDP
    10  电子邮件    SMTP     TCP
    11  远程终端输入  TELNET    TCP
    12  万维网     HTTP     TCP
    13  文件传送    FTP      TCP
     
    --端口
    运输层的复用和分用功能,使得给应用层的每个应用进程赋予一个明确的标志至关重要。在单个计算机中的进程是用进程标识符来标志的。但是在因特网环境下,用计算机操作系统所指派的这种进程标识符来标志运行在应用层的各种应用进程则是不行的。因为因特网上使用的计算机的操作系统种类很多,而不同的操作系统又使用不同格式的进程标识符。为了使运行不同操作系统的计算机的应用进程能够互相通信,就必须用统一的方法(而这种方法必须与操作系统无关)对TCP/IP体系的应用进程进行标志。但是,把一个特定机器上运行的特定进程指明为因特网上通信最后的终点还是不可行的。因为进程的创建和摊销都是动态的,通信的一方几乎无法识别对方机器上的进程。另外,我们往往需要利用目的主机提供的功能来识别终点,而不需要知道具体实现这个功能的进程是哪一个。   解决这个问题的方法就是在运输层使用协议端口号(protocol port number),或通常简称为端口(port).这就是说,虽然通信的终点是应用进程,但我们只要把要传送的报文交到目的主机的合适的目的端口,剩下的工作(即最后的交付给目的进程)就由TCP来完成。
     
    注意:这种在协议层间的抽象的协议端口是软件端口,和路由器或交换机上的硬件端口是完全不同的概念。硬件端口是不同硬件设备进行交互的接口,而软件端口是应用层的各种协议进程与运输实体进行层间交互的一种地址。不同系统具体实现端口的方法可以是不同的。
        TCP/IP的运输层用一个16位端口号来标志一个端口。但请注意端口号只具有本地意义,它只是为了标志本计算机应用层中的各个进程在和运输层交互时的层间接口。在因特网不同计算机中,相同的端口号是没有关联的。16位的端口号可允许65535个不同的端口号。
     
    由此可见,两个计算机中的进程要互相通信,不仅必须知道对方的IP地址(为了找到对方的计算机),而且还要知道对方的端口号(为了找到对方计算机中的应用进程)
     
    因特网上的计算机通信是采用客户--服务器方式。客户在发起通信请求时,必须先知道对方服务器的IP地址和端口号,因此运输层的端口号共分为两在类:
    1.服务器端使用的端口号:这又分为两在类,最重要的一类叫做熟知端口号(well-known port number)或系统端口号,数值为0-1023.这些数值可以网址www.iana.org查到。IANA把这些端口号指派给了TCP/IP最重要的一些应用程序,让所有的用户都知道。当一种新的应用程序出现后,IANA必须为它指派一个熟知的端口,否则因特网上的其他应用进程就无法和它进行通信。下面是一些熟知端口号
    FTP 21,    TELNET 23,    SMTP 25,    DNS 53,    TFTP 69,    HTTP 80,    SNMP 161,    SNMP(trap)    162
        另一类端口叫做登记端口号,数值为1024~49151,这类端口号是为没有熟知端口号的应用程序使用的。使用这类端口号必须在IANA按照规定的手续登记,以防止重复。
    2.客户端使用的端口号    数值为49152~65535.由于这类端口号仅在客户进程运行时才动态选择,因此又叫做短暂端口号。 这类端口号是留给客户进程选择暂时使用。当服务器进程收到客户进程的报文时,就知道了客户端使用的端口号,因而可以把数据发送到客户进程。通信结束后,刚才已使用的客户端口号不复存在。这个端口号就可以供其他客户进程以后使用。
     
    ---用户数据报协议UDP
    UDP的主要特点:
    1.无连接的
    2.UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态
    3。UDP是面向报文的。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付给IP层
        3.1    UDP没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。很多的实时应用(如IP电话,实时视频会议等)要求源主机以恒定的速率发送数据,并且允许网络发生拥塞时丢失一些数据,但却不允许数据有太大的时延。UDP正好适合这种要求
        3.2    UDP支持一对一,一对多,多对一和多对多的交互通信
        3.3    UDP的首部开销小,只有8个字节,比TCP的20个字节的首部要短
    UDP用户数据报的首部格式:
     
     
    当运输层从IP层收到UDP数据报时,就根据首部中的目的端口,把UDP数据报通过相应的端口,上交到最后的终点。如果接收方UDP发现收到的报文中的目的端口号不正确(即不存在对应于该端口号的应用进程)就丢弃该报文,并由ICMP发送“端口不可达”差错报文给发送方。Traceroute就是让发送的UDP用户数据报故意使用一个非法的UDP端口,结果ICMP就返回“端口不可以达”差错报文,因而达到测试目的。
    UDP用户数据报首部中的检验和的计算方法有引特殊。在计算检验和时,要在UDP用户数据报之前增加12个字节的伪首部。所谓“伪首部”是因为这种伪首部并不是UDP用户数据报真正的首部,只是在计算检验和时,临时添加在UDP用户数据报前面,得到一个临时的UDP用户数据报。检验和就是按照这个临时的UDP用户数据报来计算的。伪首部即不向下传送也不向上递交,而仅仅是为了计算检验和。
     
    ---------TCP连接
    TCP连接的主要特点:
    1.是面向连接的运输层协议。应用程序在使用TCP协议之前,必须先建立TCP连接。在传送完数据后,必须释放已经建立的连接
    2.每一条TCP连接只能有两个端点(endpoint),每一条TCP连接都是点对点的()一对一
    3.TCP提供可靠交付服务。通过TCP连接传送的数据,无差错,不丢失,不重复,并且按序到达
    4.TCP提供全双工通信。TCP允许通信双方的应用进程在任何时候都能发送数据。TCP连接的两端都高有发送缓存和接收缓存,用来临时存放双向通信的数据。在发送时,应用程序在把数据传送给TCP的缓存后,就可以做自己的事,而TCP在合适的时候把数据发送出去。在接收的时候,TCP把收到的数据放入缓存,上层的应用进程在合适的时候读取缓存中的数据。
    5.面向字节流。TCP中的“流”指的是流入到进程或从进程流出的字节序列。“面向字节流”的含义是:虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序交下来的数据看成仅仅是一连串的无结构的字节流。TCP并不知道所传送的字节流的含义。TCP报文先要传送到IP层,加上IP首部后,再传送到数据链路层。再加上数据链路层的首部和尾部后,才离开主机发送到物理链路。
     
    TCP和UDP在发送报文时所采用的方式完全不同。TCP对应用程序一次把多长的报文发送到TCP的缓存中是不关心的,TCP根据对方给出的窗口值和当前网络的拥塞程序来决定一个报文应包含多少个字节(UDP发送的报文长度是应用进程给出的)。如果应用进程传送到TCP缓存的数据块太长,TCP就可以把它划分短一些再传送。如果应用进程一次只发来一个字节,TCP也可以等待积累有足够的字节后再构成报文段发送出去。
     
    TCP 的连接的端点是什么呢?不是主机,不是主机 的IP地址,不是应用 进程,也不是运输层的协议端口。TCP连接的端点叫做套接字(socket)或插口。端口号拼接到(contatenated with)IP 地址即构成了套接字。
            套接字socket = (IP地址:端口号)
    自动重传请求ARQ(automatic Repeat request):重传的请求是自动进行的,接收方不需要请求发送方重传某个出错分组。
    所谓流量控制(flow control)就是让发送方的发送速率不要太快,要让接收方来得及接收。
    拥塞控制与流量控制的关系密切,它们之间存在着一些差别。所谓拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。流量控制往往是点对点通信量的控制,是个端到端的问题
    TCP的运输连接管理:
    TCP是面向连接的协议,运输连接是用来传送TCP报文的。TCP运输连接的建立和释放是每一次面向连接的通信中必不可少的过程。
    在TCP连接建立的过程中要解决以下三个问题:
    1.要使每一方确知对方的存在
    2.要允许双方协商的一些参数(如最大窗口值,是否使用窗口扩大选项和时间戳选项以及服务质量等)
    3.能够对运输实体资源(如缓存大小,连接表中的项目等)进行分配。
     
    5.应用层
    前面的层都是计算机网络提供通信服务的过程。应用层则是把这些通信服务提供给应用进程来使用。主要是各种应用进程通过什么应用层协议来使用网络所提供的这些通信服务。应用 层就具体内容就是规定应用进程在通信时遵守的协议。
    域名系统DNS(Domain Name Systemping )
     因特网的域名系统DNS被设计成为一个联机分布式数据库系统,并采用客户服务器方式。DNS规定,域名中的标号都是由英文字母和数字组成的,每一个标号不超过63个字符(为记忆方便最好不超过12个字符),也不区分大小写字母(如CCTV或cctv是等效的)。标号中除连字符外不能使用其它的标点符号。级别最低的域名写在最左边,而级别最高的域名则写在最右边。由多个标号组成的完整域名总共不超过255个字符。
    DNS服务器的管辖范围不是以“域”为单位,而是以“区”为单位。区是DNS服务器实际管辖范围,区可能等于或小于域,但一定不可能大于域。
    文件传输协议:基于TCP的FTP和基于UDP的TFTP
    FTP(File Transfer Protocol) 文件传输协议只提供文件传送的一些基本服务,它使用TCP可靠的运输服务。FTP的主要功能是减少或消除在不同操作系统下处理文件的不兼容性。FTP使用客户服务器方式,一个FTP服务器进程可同时为多个客户提供服务。FTP的服务器进程由两大部分组成:一个主进程,负责接受新的请求;另外有若干个从属进程,负责处理单个请求。
    主进程工作步骤如下:
    1,打开端口(端口号为21),使客户进程能够连接上
    2.等待客户进程发出连接请求
    3.启动从属进程来处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建其他一些子进程
    4.回到等待状态,继续接受其他客户进程发来的请求。主进程与从属进程的处理是并发地进行。
     
    简单文件传输协议TFTP:
    TFTP主要优点有两个:1,TFTP可用于UDP环境,如当需要将程序或文件同时向许多机器下载时就往往需要使用TFTP。2.TFTP代码所占代码内存较小,这对较小的计算机或某些特殊用途的设备是很重要的。这些设备不需要硬盘,只需要固化了TFTP,UDP和IP的小容量只读存储器即可。
    TFTP主要特点:
    1.每次传送的数据报文中有512字节的数据,但最后一次可不足512字节
    2.数据报文按序号编号,从1开始
    3.支持ASCII码或二进制传送
    4.可对文件进行读或写
    5.使用很简单的首部
     
    远程终端协议TELNET:
    telnet能够将用户的击键传到远地主机,同时也能将远地主机的输出通过TCP连接返回到用户屏幕。又称终端仿真协议。
    telnet定义了数据和命令怎样通过因特网,这些定义就是所谓的网络虚拟终端NVT(Network Virtual Terminal)
    ------------万维网WWW(world wide web)
    万维网是一个分布式的超媒体(hypermedia)系统,它是超文本(hypertext)系统的扩充。
    万维网使用统一资源定位符URL来标志万维网上的各种文档,并使每一个文档在整个因特网的范围内具有的标识符URL.万维网使用超文本传输协议HTTP,它是一个应用层协议,使用TCP连接进行可靠的传送。万维网使用超文本标记语言HTML,使得万维网页面的设计者可以很方便地用链接从本页面的某处链接到因特网上的任何一个万维网页面,并且能够在自己的主机屏幕上显示出来。
    URL的一般形式为:<协议>://<主机>:<端口>/<路径>
    使用HTTP的URL:http://<主机>:<端口>/<路径> http默认端口是80,通常可以省略
     
    HTTP是面向事务的(transaction-oriended)应用层协议,它是万维网上能够可靠地交换文件(文本,声音,图像等各种多媒体文件)的重要基础。HTTP协议是无状态的
     
    代理服务器(proxy server)是一种网络实体,它又称为万维网高速缓存(Web cache)
    HTTP有两类报文;请求报文和响应报文
    请求报文和响应报文都是由三部分组成,这两类报文格式的区别是开始行不同:
    1.开始行:用于区分请求报文还是响应报文。在请求报文中的开始行叫做请求行,而在响应报文中的开始行叫做状态行(Status_Line).在开始行的三个字段之间都是以空格分隔开来。最后的“CR”和“LF”分别代表“回车”和“换行”
    2.首部行,用来说明浏览器,服务器或报文主体的一些信息。
    3.实体主体(entity body)在请求报文中一般没有这个字段,而在响应报文中也可能没有这个字段。
    HTTP请求报文的一些主要特点:请求报文第一行“请求行”,只有三个内容:方法,请求资源的URL,以及HTTP的版本。
     
    每一个语法报文发出后都能收到一个响应报文。响应报文的第一行就是状态行。状态行包括三项内容:HTTP的版本,状态码,以及解释有状态码的简单短语
    状态码(Status-Code)都是三位数字,分为5大类33种
    1XX表示通知信息的,如请求收到 了或正在处理
    2XX表示成功,如接受或知道了
    3XX表示重定向,如要完成请求还必须采取进一步行动
    4XX表示客户端差错,如请求中有错误的语法或不能完成
    5XX表示服务器错误,如服务器失效无法完成请求
     
    电子邮件:
    简单邮件传送协议 SMTP(Simple Mail Transfer Protocol)
    通用因特网邮件扩充MIME(Multipurpose Internet Mail Extensions)
    一个电子邮件系统应具有三个主要组成构件,用户代理,邮件服务器,以及邮件发送协议(如SMTP)和邮件读取协议(POP3)。 
     
    用户代理UA(User Agent),就是用户与电子邮件系统的接口,大多数情况下就是用户PC机上的一程序。因此用户代理又称电子邮件客户端程序
     
    SMPT规定了在两个相互通信的SMTP进程之间应如何交换信息。由于SMTP使用客户服务器方式,因此负责发送邮件 的SMTP进程就是SMTP客户,而负责接收邮件的SMTP进程就是SMTP服务器。SMTP不使用中间的邮件服务器
     
    邮件读取协议POP3和IMAP
    即邮局协议第3个版本POP3和网际报文存取协议IMAP(Innternet Message Access Protocol)
     
    通用因特网邮件扩充MIME
    SMTP有一些缺点:
    1.SMTP不能传送可执行文件或其他的二进制对象
    2.SMTP限于传送7位的ASCII码
    3.SMTP服务器会拒绝超过一定长度的邮件
    4.某些SMTP的实现并没有完全按照SMTP的因特网标准
    于是在这种情况下提出了通用因特网邮件扩充协议MIME,MIME并不有改动或取代SMTP,但增加了邮件主体结构,并字义了传送非ACSII码的编码规则。MIME邮件可以现有的电子邮件程序和协议下传送
     
    动态主机配置协议DHCP(Dynamic Host Configuration Protocol)
    为了把协议软件做成通用的和便于移植,协议软件的编写者不会把所有的细节都固定在源代码中。相反,他们把协议软件参数化,这就使得在很多台计算机上有可能使用同一个经过编译的二进制代码。一台计算机和另一台计算机的许多区别都可以通过 一些不同的参数来体现。在协议软件运行之前,必须给每一个参数赋值。在协议软件中给这些参数赋值的动作叫做协议配置。一个协议软件在使用之前必须是已正确配置的。具体的配置信息有那些取决于协议栈。如连接到因特网的计算机的协议软件需要配置项目包括:
    1.IP地址。2.子网掩码。3.默认路由器的IP地址。4.域名服务器的IP地址。
     
    DHCP提供一种机制,称为即插即用。这允许一台计算机加入新的网络和获取IP地址而不用手工参与。DHCP使用客户服务器形式,需要IP 地址的主机在启动时就向DHCP服务器广播发送发现报文(DHCPDISCOVER)(将目的IP地址置为全1,即255.255.255.255)。DHCP服务器先在其数据库中查找该计算机的配置信息。若找到,则返回给该计算机。若找不到,则从服务器的IP地址池中取出一个分配给该计算机。
    -------------------网络安全
    运输层安全套接层SSL(Secure Socket Layer)协议
    SSL可对万维网客户与服务器之间传送的数据进行加密和鉴别。它在双方联络阶段(也就是握手阶段)对将要使用的加密算法(如用DES或RSA)和双方共享的会话密钥进行协商,完成客户与服务器之间的鉴别。在联络阶段完成后,所有发送的数据都使用在联络阶段商定的会话密钥。SSL不仅被所有的浏览器和万维网服务器所支持,而且也是运输层安全协议TLS的基础
    SSL提供三个功能:
    1.SSL服务器鉴别    这允许用户证实服务器的身份。具有SSL功能的浏览器维持一个表,上面有一些可信的认证中心CA及其公钥。当浏览器要和一个具有SSL功能 的服务器进行商务活动时,浏览器就从服务器得到 含有服务器的公钥的证书。此证书是由某个认证中心CA发出的(此CA在客户的表中)。这就使得客户在提交其信用卡之前能够服务器的身份
    2.加密的SSL会话    客户和服务器交互的所有数据都在发送方加密,在接收方解密。SSL还提供了一种检测信息是否被攻击者篡改的机制
    3.SSL客户鉴别。允许服务器证实客户的身份。这个信息对服务器是重要的。
     
    从网络传输角度看,通常有两种不同的加密策略:链路加密与端到端加密
    防火墙技术一般分为两类:
    1.网络级防火墙,主要用来防止整个网络出现外来非法的入侵。属于这类的有分组过滤(packet filtering)和授权服务器(authorization server
    2.应用级防火墙,从应用 程序来进行访问控制。通过使用应用网关和代理服务器来区分各种应用。
    ---------------------------------------------------------------------无线网络
    WLAN(Wireless Local Area Network)
    使用802.11系列协议的局域网又称为wi-fi(Wireless-Fidelity)意思是无限保真度
     
  • 相关阅读:
    docker容器导出导入
    docker容器stop不了问题的处理
    weblogic server 后台命令启动
    查看Linux系统版本的命令
    Oracle12c修改字符集
    Oracle导出导入时客户端字符集设置
    centos7 防火墙开放端口
    docker仓库安装
    spring boot打war包的修改内容
    连接谷歌gee
  • 原文地址:https://www.cnblogs.com/wn398/p/3389839.html
Copyright © 2011-2022 走看看