美文网首页
网络协议的几个概念

网络协议的几个概念

作者: AndroidHint | 来源:发表于2018-06-03 18:15 被阅读0次

    一、网络的五层划分

    网络协议的五层划分从下到上可以分为:

    1、物理层

    物理层就是指光纤、电缆或者电磁波等真实存在的物理媒介。这些媒介可以传输物理信号,信号的传输是以二进制的形式传递的。

    2、数据链路层

    在连接层中,数据是以帧(frame)为单位传输的。所谓的帧,就是一段有序的 0/1序列,连接层的功能就是要识别 0/1序列 中所包含的帧。比如说,它会根据一定的 0/1 组合识别出帧的开始和结束。
    在帧中,有源地址(Source)和目标地址(Destination),还有能够探测错误的校验序列(Frame Check Sequence)。当然,还有最重要的就是数据(data)。
    以太网和WiFi是现在最常见的连接层协议。通过连接层协议,我们可以建立局域的以太网或者WiFi局域网,并让位于同一局域网中的两台计算机通信。

    3、网络层

    网络层用来处理网络上流动的数据包。数据包是网络层传输的最小单位。在这一层中,接收端会将数据链路层传递过来的帧剥离IP首部,然后将其转发给传输层。在该层中,常用的协议为IP协议。

    4、传输层

    如果只是两台计算机之间的通信,利用上面所说的三层协议就可以实现。但是我们知道一般的通信都是应用间的通信,也就是端口对端口之间的通信,这个时候就需要用到传输层了。在传输层中,有TCP和UDP两种协议,这两种协议都可以使用端口号来识别需要通信的应用。

    5、应用层

    通过上面的四层协议,我们基本上是可以在不同的应用之间实现通信。而应用层的出现,则进一步规范了通信双方所遵循的数据传输格式,例如:在Web中我们经常使用HTTP协议,在传输文件时经常使用FTP协议,而在发送电子邮件时经常使用IMAP协议等都属于应用层的协议。

    层与层之间数据的发送与接收如下图所示:


    二、TCP和UDP的区别

    1、UDP的特点:

    UDP是无连接的,即发送数据前不需要建立连接,因此减少了开销和发送数据之前的时延。
    UDP尽最大努力交付,即不保证可靠交付。
    UDP没有拥塞控制,即网络出现的拥塞不会使源主机的发送速率降低。

    2、TCP的特点

    TCP是面向连接的,在使用之前必须先建立TCP连接。
    每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的。
    TCP提供可靠交付的服务,也就是说通过TCP连接传送的数据,无差错、不丢失、不重复、并且按序到达。

    三、TCP的三次握手和四次挥手

    1、三次握手

    客户端向服务器发出请求连接的报文,这时SYN=1,seq=x。这时客户端进入SYN-SENT(同步已发送)状态。
    服务器收到连接请求报文后,如果同意连接则向A发送确认,在确认报文中将SYN位和ACK位都置1,确认号ack=x+1,同时消耗一个序号seq=y。这时服务器进入SYN-RCVD(同步收到)状态。
    这时客户端收到服务器请求后,还要向服务器给出确认。确认报文ACK为1,确认号ack=y+1,序号是seq=x+1。这个时候TCP连接已经建立,客户端都进入了ESTABLISHED(已建立连接)状态。当服务器收到客户端的请求后,也进入ESTABLISHED(已建立连接)状态。
    为什么客户端还多发送一次请求呢?这主要是因为防止已经失效的连接请求报文突然又传送到B,因而产生错误。
    考虑一种情况:
    客户端发出的第一个连接请求在某个网络结点滞留了,以致于延误到连接释放后的某个时间才到达服务器。服务器收到了后,误以为是客户端又发送的一个请求,所有向客户端发出请求确认,同意建立连接。如果不采用三次握手,那么只要服务器发出确认,新的连接就建立了。由于客户端没有发出建立连接的请求,所有根本不会理睬服务器的确认,也不会向服务器发送数据,但服务器却以为新的运输数据已经建立了,并一直在等待客户端发过来的数据,这样服务器的很多资源就白白浪费了。

    2、四次挥手

    数据传输完成后,通信的双方都可释放连接。如果客户端向服务器发出释放连接的报文,并停止发送数据,主动关闭TCP连接,然后进入FIN-WAIT-1(终止等待1)状态,等待服务器的确认。服务器收到后发出确认,然后服务器进入CLOSE-WAIT(关闭等待)状态。于是客户端到服务器这个方向的连接已经断开。但是服务器到客户端这个方向的连接却未断开。客户端收到来自服务器的确认后,就进入FIN-WAIT-2(终止等待2)状态,等待服务器发出的连接是否报文。若服务器没有要向客户端发送的数据,则向客户端发送一个释放连接的报文,然后进入LAST-ACK(最后确认)状态,等待客户端的确认。客户端在收到B的连接释放报文后,需要对此做出确认,然后进入TIME-WAIT1(时间等待状态),客户端需要经过2MSL(最长报文段寿命)的时间才能结束TCP连接。

    四、参考文章

    # 协议森林01 邮差与邮局 (网络协议概观)

    相关文章

      网友评论

          本文标题:网络协议的几个概念

          本文链接:https://www.haomeiwen.com/subject/ncmrsftx.html