Java 网络编程:(四)通信要素2:网络协议

一、网络通信协议

  1、网络通信协议

    通信协议是对计算机网络通信必须遵守的规则,只有遵守这些规则,计算机之间才能进行通信。这些协议好比交通规则一样。

    计算机网络中实现通信必须有一些约定,即通信协议, 对速率、传输代码、代码结构、传输控制步骤、出错控制等制定标准

    协议中对数据的传输格式、传输速率、传输步骤等做了统一规定,通信双方必须同时遵守,最终完成数据交换。

  2、问题:网络协议太复杂

    计算机网络通信涉及内容很多,比如指定源地址和目标地址,加密解密,压缩解压缩,差错控制,流量控制,路由控制,如何实现如此复杂的网络协议呢?

  3、通信协议分层的思想

    在制定协议时,把复杂成份分解成一些简单的成份,再将它们复合起来。最常用的复合方式是层次方式,即同层间可以通信、上一层可以调用下一层,而与再下一层不发生关系。各层互不影响,利于系统的开发和扩展。

  4、

  5、

二、TCP/IP 协议簇

  TCP/IP 以其两个主要协议:传输控制协议(TCP)和网络互联协议(IP)而得名,实际上是一组协议,包括多个具有不同功能且互为关联的协议。

  IP(Internet Protocol)协议是网络层的主要协议,支持网间互连的数据通信。

  TCP/IP协议模型从更实用的角度出发,形成了高效的四层体系结构,即物理链路层、 IP层、传输层和应用层

  TCP/IP 协议

    传输控制协议/因特网互联协议(Transmission Control Protocol/Internet Protocol ),是 Internet 最基本、最广泛的协议。

    它定义了计算机如何连入因特网,以及数据如何在它们之间传输的标准,它的内部包含一系列的用于处理数据通信的协议,并采用了四层的分层模型,每一层都呼叫它的下一层所提供的协议来完成自己的需求。

    

三、传输层协议:TCP 与 UDP

  通信的协议还是比较复杂的,java.net 包中包含的类和接口,它们提供层次的通信细节。可以直接使用这些类和接口,来专注于网络程序开发,而不用考虑通信的细节。

  java.net 包中提供了两种常见的网络协议的支持:TCP 和 UDP。

  1、TCP

      传输控制协议 (Transmission Control Protocol)

      TCP协议是面向连接的通信协议,即传输数据之前,在发送端和接收端建立逻辑连接,然后再传输数据,它提供了两台计算机之间可靠无差错的数据传输。

      特点:

      (1)使用TCP协议前,须先建立TCP连接,形成传输数据通道;

      (2)传输前,采用“三次握手” 方式,点对点通信, 可靠的

      (3)TCP协议进行通信的两个应用进程:客户端、 服务端。

      (4)在连接中进行大数据量的传输

      (5)传输完毕,需释放已建立的连接效率低

      三次握手:

      

    三次握手: TCP协议中,在发送数据的准备阶段,客户端与服务器之间的三次交互,以保证连接的可靠

        第一次握手客户端向服务器端发出连接请求,等待服务器确认。 

        第二次握手服务器端向客户端回送一个响应,通知客户端收到了连接请求 

        第三次握手客户端再次向服务器端发送确认信息,确认连接。整个交互过程如下图所示

       

      完成三次握手,连接建立后,客户端和服务器就可以开始进行数据传输了。由于这种面向连接的特性,TCP协议可
以保证传输数据的安全,所以应用十分广泛,例如下载文件、浏览网页等。 

      四次挥手:

  2、UDP

      用户数据报协议(User Datagram Protocol)UDP协议是一个面向无连接的协议。

      特点:

      (1)将数据、源、目的封装成数据包, 不需要建立连接

      (2)每个数据报的大小限制在64K内;

      (3)发送不管对方是否准备好,接收方收到也不确认, 故是不可靠的;

      (4)可以广播发送;

      (5)发送数据结束时无需释放资源,开销小,速度快

      (6)它是不可靠协议,因为无连接,所以传输速度快,但是容易丢失数据。日常应用中,例如视频会议、QQ聊天等。 

  

 

原文地址:https://www.cnblogs.com/niujifei/p/14878541.html