一、网络通信协议
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聊天等。