龙空技术网

JAVA高并发网络编程之TCP和UDP协议

IT人故事会 217

前言:

当前姐妹们对“javatcp和udp”大约比较注重,兄弟们都想要知道一些“javatcp和udp”的相关知识。那么小编在网摘上搜集了一些关于“javatcp和udp””的相关内容,希望咱们能喜欢,同学们一起来学习一下吧!

开始JAVA高并发网络编程,网络这块先通过TCP和UDP基础的协议开始学习,慢慢到java的socket编程,nio,netty的高性能编程。这次先说说TCP和UDP这样的协议

(一)OSI网络七层模型

① 介绍

为了使不同计算机厂家的计算机能够相互通信,以便在更大的范围内建立计算机网络,有必要建立一个国际范围的网络体系标准。

② 各层的主要功能

各层分层,就是为了让各种的开发复杂性降低。

低三层

物理层:机械,电子,定时接口通信信道上的原始比特流传输。数据链路层:物理寻址,同时将原始比特流转变为逻辑传输线路。通过验证,确认和反馈重发等手段,形成稳定的数据链路,发送(010101)怎么样确定稳定的传输到另一端,软硬结合的,形成一个保障。网络层:进行路由选择和流量控制,分组传输,路由选择(IP协议)。这是个逻辑链路,没有真实的存在。

传输层:是个承上启下,提供可靠的端口到端口的数据传输服务(TCP/UDP协议)。

高三层

会话层:负责建立,管理和终止进程之间的会话和数据交换。表示层:负责数据格式转换,数据加密与解密,压缩与解压缩等。应用层:为用户的应用金城提供网络服务。

(二)传输控制协议TCP

① 介绍

传输控制协议(TCP)是Internet一个重要的传输层协议。TCP提供面对连接,可靠,有序,字节流传输服务。应用程序在使用TCP之前,必须先建立TCP连接。

② TCP握手机制

三次握手

为什么是三次握手,而不是两次或者四次握手,知乎上有个形象的示例。

三次握手:“喂,你听得到吗?”“我听得到呀,你听得到我吗?”“我能听到你,今天balabala……”两次握手:“喂,你听得到吗?”“我听得到呀”“喂喂,你听得到吗?”“X,我听得到呀!!!!”“你TM能不能听到我讲话啊!!喂!”“……”四次握手:“喂,你听得到吗?”“我听得到呀,你听得到我吗?”“我能听到你,你能听到我吗?”“……不想跟XX说话”

四次挥手

(三)用户数据报协议UDP

① 介绍

用户数据协议UDP是iNternet传输层协议。提供无连接,不可靠,数据报尽力传输服务。

② 开发注意点应用进程更容易控制发送什么数据以及何时发送。无需建立连接。无连接状态。首部开销小。

(四)TCP和UDP区别

什么情况下用UDP

直播实时性,弹幕,udp比较快,偶尔丢一个包,视频有卡顿,视频有模糊,可以接受的。上报日志,物联网里面,丢一个关系不大。

(五)socket编程

Internet中应用最广泛的应用编程接口,实现与3种底层协议接口

数据报类型套接字SOCK_DGRSM(面对UDP接口)流式套接字SOCK_STREAM (面对TCP接口)原始套接字SOCK_RAM(面向网络层协议接口IP,ICMP等)socket API 及其调用过程

1、创建服务器套接字---分配内存、初始化
2、服务器套接字--侦听
3、建立与客户端配套的客户端套接字
4、与客户端通讯(可以多客户端)
5、关闭、销毁[服务器端相应套接字

客户端:
1、创建客户端套接字---[分配内存]初始化
2、连接服务器
3、与服务器通讯
4、关闭、销毁客户端套接字

PS:在实际的工作中TCP和UDP的开发,接下来也会以这种方式,TCP,UCP的编程顺序往后来进行讲解。

标签: #javatcp和udp