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

2020-11-09 15:29:41 浏览数 (1)

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

(一)OSI网络七层模型
  • ① 介绍

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

  • ② 各层的主要功能

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

低三层

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

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

高三层

  1. 会话层:负责建立,管理和终止进程之间的会话和数据交换。
  2. 表示层:负责数据格式转换,数据加密与解密,压缩与解压缩等。
  3. 应用层:为用户的应用进程提供网络服务。
(二)传输控制协议TCP
  • ① 介绍

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

  • ② TCP握手机制

三次握手

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

代码语言:javascript复制
三次握手:
“喂,你听得到吗?”
“我听得到呀,你听得到我吗?”
“我能听到你,今天balabala……”

两次握手:
“喂,你听得到吗?”
“我听得到呀”
“喂喂,你听得到吗?”
“X,我听得到呀!!!!”
“你TM能不能听到我讲话啊!!喂!”
“……”

四次握手:
“喂,你听得到吗?”
“我听得到呀,你听得到我吗?”
“我能听到你,你能听到我吗?”
“……不想跟XX说话”

四次挥手

(三)用户数据报协议UDP
  • ① 介绍

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

  • ② 开发注意点
  1. 应用进程更容易控制发送什么数据以及何时发送。
  2. 无需建立连接。
  3. 无连接状态。
  4. 首部开销小。
(四)TCP和UDP区别
  • 什么情况下用UDP

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

(五)socket编程

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

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

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

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

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

0 人点赞