zoukankan      html  css  js  c++  java
  • 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聊天等。 

      

     

  • 相关阅读:
    014.Nginx跨域配置
    013.Nginx动静分离
    附002.Nginx代理相关模块解析
    附001.Nginx location语法规则
    016.Nginx HTTPS
    015.Nginx重定向
    Blazor带我重玩前端(四)
    数据结构中的树(二叉树、二叉搜索树、AVL树)
    Flask前后端分离项目案例
    LeetCode-位运算相关题解
  • 原文地址:https://www.cnblogs.com/niujifei/p/14878541.html
Copyright © 2011-2022 走看看