计算机网络基础知识

  互联网的本质就是一些列的网络协议。

  一台电脑,虽然硬件齐全,但是想要和其他电脑进行信息交换,还得通过联网来进行。

  那么问题就来了?何为"网"?其实,计算机通信和人与人之间交流类似,比如你想和一个英国人进行交流,那么前提是你得懂英文。如果你不懂英文,他说的你不懂,你说的他不懂。这样交流又有何意义呢?因此,人与人之间交流的障碍,我们可以通过协商,确认一种大家都认可的标准,按照这个标准,就可以进行交流。计算机与此类似,也需要制定一系列的标准,才能让其他计算机听懂你所传递的信息,这种标准就是我们所说的协议。

  互联网协议的功能:定义计算机如何接入internet,以及接入internet的计算机通信的标准。

 网络层次的划分

   为了使不同计算机厂家生产的计算机能够相互通信,以便在更大的范围内建立计算机网络,国际标准化组织(ISO)在1978年提出了“开放系统互联参考模型”,即著名的OSI/RM模型(Open System Interconnection/Reference Model)。它将计算机网络体系结构的通信协议划分为七层,自下而上依次为:物理层(Physics Layer)、数据链路层(Data Link Layer)、网络层(Network Layer)、传输层(Transport Layer)、会话层(Session Layer)、表示层(Presentation Layer)、应用层(Application Layer)。其中第四层完成数据传送服务,上面三层面向用户。
  除了标准的OSI七层模型以外,常见的网络层次划分还有TCP/IP四层协议以及TCP/IP五层协议,它们之间的对应关系如下图所示:
  

 

  每层常见的物理设备

    

 OSI五层模型

  1. 物理层(Physical Layer)

    主要功能:通过物理介质来传输比特流。

    主要解决问题:(1)物理层要尽可能地屏蔽掉物理设备和传输媒体,通信手段的不同,使数据链路层感觉不到这些差异,只考虑完成本层的协议和服务。

           (2)给其服务用户(数据链路层)在一条物理的传输媒体上传送和接收比特流(一般为串行按顺序传输的比特流)的能力,为此,物理层应该解决物理连接的建立、维持和释放问题。
           (3)在两个相邻系统之间唯一地标识数据电路。
    主要设备:(1)中继器(RP):主要完成物理层的功能,负责在两个节点的物理层上按位传递信息,完成信号的复制、调整和放大功能,以此来延长网络的长度。由于存在损耗,在线路上传输的信号功率会逐渐衰减,衰减到一定程度时将造成信号失真,因此会导致接收错误。中继器就是为解决这一问题而设计的。它完成物理线路的连接,对衰减的信号进行放大,保持与原数据相同。
            
         (2)集线器(Hub):以太网集线器在传输信号时没有针对性,是采用了广播(Broadcast)的方式发送。集线器的任何一个端口接收到数据包时,集线器都会将该数据包广播到集线器的其他工作端口上,当这些端口所连接的网卡受到数据包后,会判断该数据包是否是发给自己的,如果是,则接收,反之将其丢弃。显而易见,这种向所有端口广播数据包的传输形式存在着两方面的不足:1,集线器向所有结点发送数据包,会造成数据通信的不安全,因为会有一些别有用心的人很容易就能截获他人的数据包;2,由于数据包是向所有结点同时发送的,再加上集线器共享带宽的工作方式,很容易形成广播风暴,导致网络性能下降,甚至网络瘫痪。
    主要协议:IEEE802.1A、IEEE802.2
  2.数据链路层(Data Link Layer)
    主要功能:将比特组合成字节,再将字节组合成帧,使用链路层地址 (以太网使用MAC地址)来访问介质,并进行差错检测。
    主要问题:封装成帧、透明传输、差错检测
    主要设备:网桥和二层交换机、网卡
    主要协议:以太网协议,ARP,RARP
     3.网络层(Network Layer)
    主要功能:实现两个端系统之间的数据透明传送,具体功能包括寻址和路由选择、连接的建立、保持和终止等。它提供的服务使传输层不需要了解网络中的数据传输和交换技术。
    主要问题:异构网络互联、路由与转发、拥塞控制
    主要设备:路由器,三层交换机
    主要协议:IP、ICMP、OSPF、IGMP
  4.传输层(Transport Layer)
    主要功能:根据通信子网的特性,最佳的利用网络资源,为两个端系统的会话层之间,提供建立、维护和取消传输连接的功能,负责端到端的可靠数据传输。
    主要问题:传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输以及端到端的差错控制和流量控制问题
    主要设备:四层交换机、四层路由器
    主要协议:TCP/UDP
  5.应用层(application Layer) 
    主要功能:为操作系统或网络应用程序提供访问网络服务的接口。
    主要协议: HTTP、SNMP、FTP、SMTP、DNS、Telnet

 主要协议解析

  • TCP协议

   TCP每发送一个报文段,就启动一个定时器,如果在定时器超时之后还没有收到ACK确认,就重传该报文。如图所示,数据包由A的缓冲区发往B,B在收到数据包以后,回发一个ACK确认包给A,之后A将该数据包从缓冲区释放。因此,该数据包会一直缓存在A的缓冲区,直到一个ACK确认为止。 
这里写图片描述

  在TCP/IP协议中,TCP协议提供可靠的面向连接的服务;三次握手(建立连接)和四次挥手(关闭连接);使用滑动窗口机制进行流量控制;

  

                      图1 三次握手建立TCP连接的各状态 
    (1)第一次握手:建立连接时,客户端A发送SYN包[SYN=1,seq=x]到服务器B,并进入SYN_SEND状态,等待服务器B确认。 
    (2)第二次握手:服务器B收到SYN包,必须确认客户A的SYN,同时自己也发送一个SYN包,即SYN+ACK包[SYN=1,ACK=1,seq=y,ack=x+1],此时服务器B进入SYN_RECV状态。 
    (3)第三次握手:客户端A收到服务器B的SYN+ACK包,向服务器B发送确认包ACK[ACK=1,seq=x+1,ack=y+1],此包发送完毕,客户端A和服务器B进入ESTABLISHED状态,完成三次握手。 完成三次握手,客户端与服务器开始传送数据。 
    三次握手完成后,客户端和服务器就建立了TCP连接。这时可以调用accept函数获得此连接三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换TCP 窗口大小信息。在socket编程中,客户端执行connect()时,将会触发三次握手

     四次挥手的详细图解 
    TCP的连接的拆除需要发送四个包,因此称为四次挥手(four-way handshake)。客户端或服务器均可主动发起挥手动作,在socket编程中,任何一方执行close()操作即可产生挥手操作。由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这个原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。TCP要保证在所有可能的情况下使得所有的数据都能够被投递,当你关闭一个socket时,主动关闭一端的socket将进入TIME_WAIT状态,而被动关闭一方则转入CLOSED状态 ,这能够保证所有的数据都被传输。

    

                    图2 四次挥手关闭TCP连接的各状态 
    (1)首先A B端的TCP进程都处于established状态, 当A的应用程序传送完报文段,就会去主动关闭连接。A会停止发送报文段(但是还会接收),并向B发送[FIN = 1,seq=u]数据,之后进入FIN-WAIT-1状态; 
    (2)B接收到A发送的请求之后,会通知应用进程,A已经不再发送数据,同时B会向A发送ACK确认数据[ACK=1,seq=v,ack=u+1 ],B进入CLOSE-WAIT状态,A接收到B发送的数据之后,A进入FIN-WAIT-2状态;此时A到B方的连接已经关闭了(即半连接状态)。 
    (3)当B的应用进程发现自己也没有数据需要传送,B应用进程就会发出被动关闭的请求,B此时向A发送[FIN=1,ACK=1,seq=w,ack=u+1]数据,并且进入LAST-ACK状态; 
    (4)A接收到B发送的数据之后,向B发送ACK确认数据[ACK =1,seq=u+1,ack=w+1],进入TIME-WAIT状态,等待2MSL之后正常关闭连接进入CLOSED状态;B接收到A发送的确认之后进入CLOSED状态。B到A方的连接关闭!至此,TCP连接才真正全部关闭!

    

 

 

posted @ 2017-05-22 15:18  看雪。  阅读(175)  评论(0编辑  收藏  举报