传输层两大战将TCP、UDP的定位

传输层

定义一些传输数据的协议和端口,传输协议同时进行流量控制,根据接收方的数据吞入熟读,规定适当的发送速率,解决传输效率及能力问题

什么是TCP

TCP/IP即传输控制/网络协议,是面向连接的协议,发送数据前要先建立连接(发送方和接收方的成
对的两个之间必须建 立连接),TCP提供可靠的服务,也就是说,通过TCP连接传输的数据不会丢
失,没有重复,并且按顺序到达

TCP是怎么建立服务端与客户端双向通信可信型通道的

TCP三次握手是建立TCP连接的过程,用于确认客户端和服务器之间的发送和接收功能是否正常。以下是TCP三次握手的具体细节:

  1. 第一次握手:客户端向服务器发送一个SYN包(即同步序列号),并进入SYN_SENT状态,等待服务器的确认。此时,SYN=1,seq=x(seq为客户端发送的序列号),表示客户端请求与服务器建立连接。
  2. 第二次握手:服务器收到客户端发送的SYN包后,会确认客户的ACK(即确认号),ack=x+1,同时自己也发送一个SYN包,即SYN+ACK包,此时服务器进入SYN_RECV状态。SYN=1,ACK=1,seq=y(seq为服务器发送的序列号),ack=x+1,表示服务器已收到客户端的连接请求,并请求客户端确认。
  3. 第三次握手:客户端收到服务器的SYN+ACK包后,会向服务器发送一个确认包ACK,ack=y+1,此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。此时,客户端和服务器都知道彼此有收发能力,可以开始传输数据了。

在三次握手过程中,每个数据包都包含一个序列号(seq)和一个确认号(ack)。序列号用于标识发送方发送的数据包的顺序,而确认号则用于确认接收方已成功接收到的数据包的顺序。通过比较序列号和确认号,双方可以确保数据的正确传输和接收。

此外,值得注意的是,在第二次和第三次握手中,服务器和客户端都会发送SYN和ACK标志位都为1的数据包,这是因为SYN和ACK标志位在不同的阶段有不同的含义。在第二次握手中,服务器的SYN标志位表示它正在请求与客户端建立连接,而ACK标志位则表示它已接收到客户端的连接请求。在第三次握手中,客户端的SYN标志位已不再需要,因为连接已经建立,而ACK标志位则用于确认已接收到服务器的SYN+ACK包。

总之,TCP三次握手是一个非常重要的过程,用于确保客户端和服务器之间的连接是可靠的,并且可以正常地传输数据。通过三次握手,双方可以确认彼此的发送和接收功能是否正常,并建立稳定的连接。

用打电话(IM的信令)来比喻三次握手

甲给乙打电话

 第一次握手  甲拨打乙的电话,乙的手机接收到甲的通话请求    服务器确认客户端发送正常

第二次握手   乙的手机会同步返回一个信令,告诉甲的手机,大哥,我收到了你的信息哦,客户端确认自己发送和接收与服务器发送和接收都正常,此时服务器只知道自己接收正常不知道自己发送是否正常

第三次握手   甲的手机接收到这个信令后,确认了乙的手机可以呼叫的通,继续呼叫(重点是怎么确定是继续呼叫还是第一次呼叫,这也就是那些丢来丢去的数据包做的事情)客户端继续呼叫了,服务器收到它的继续呼叫,说明自己也发送成功了,确认了双方都收发正常,可以建立正常的通讯了

这三次握手是缺一不可的,只要缺少就无法保证双向的接收都正常

 实际上以上就已经是建立了可信型通讯通道了,你实际上通讯的拒接或者收听都是建立在这个通讯通道建立的后续操作了

使用TCP协议的协议

使用TCP(传输控制协议)的协议有很多,以下是一些常见的例子:

  1. HTTP:超文本传输协议,用于在Web浏览器和服务器之间传输数据。
  2. HTTPS:安全超文本传输协议,是HTTP的安全版本,使用SSL/TLS对数据进行加密。
  3. FTP:文件传输协议,用于在客户端和服务器之间传输文件。
  4. POP3:邮局协议,用于从邮件服务器接收电子邮件。
  5. SMTP:简单邮件传输协议,用于发送电子邮件。
  6. Telnet:远程登录协议,允许用户通过终端登录到远程计算机。
  7. SSH:安全外壳协议,用于加密安全登录,替代安全性较差的Telnet协议。

以上只是使用TCP协议的一部分协议,实际上还有很多其他的协议也使用TCP进行数据传输。TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,广泛应用于各种网络应用中。

TCP例子

package com.zxs;import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;public class TCPServer {public static void main(String[] args) {try {ServerSocket   server = new ServerSocket(8081);System.out.println("等待客户端连接...");while (true) {Socket socket = server.accept();System.out.println("客户信息为:" + socket.getRemoteSocketAddress());InputStream in = socket.getInputStream();byte[] buffer = new byte[1024];int len = 0;while ((len = in.read(buffer)) > 0) {System.out.println(new String(buffer, 0, len));}OutputStream out = socket.getOutputStream();out.write("1".getBytes());}} catch (IOException e) {e.printStackTrace();}}
}

 

package com.zxs;import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;public class TCPClient {public static void main(String[] args) throws IOException {Socket socket = new Socket("127.0.0.1", 8081);OutputStream outputStream = socket.getOutputStream();System.out.println("连接成功请输入:");while (true) {byte[] car = new Scanner(System.in).nextLine().getBytes();outputStream.write(car);outputStream.flush();}}
}

什么是UDP

UDP它是属于TCP/IP协议族中的一种。是无连接的协议,发送数据前不需要建立连接,是没有可
靠性的协议。因为不需要建立连接所以可以在在网络上以任何可能的路径传输,因此能否到达目的
地,到达目的地的时间以及内容的正确性都是不能被保证的。

我只负责公告,能不能收到是你们自己的事情

UDP(User Datagram Protocol)是用户数据报协议,它是OSI(Open System Interconnection,开放式系统互联)参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。UDP协议主要用于不要求分组顺序到达的传输中,分组传输顺序的检查与排序由应用层完成。

UDP协议的主要特点包括:

  1. 面向无连接的协议,速度快但是不可靠。
  2. 只管发送数据,不确认对方是否收到,对方接收到数据之后也不会反馈一个信息给发送方。
  3. 基于数据包(报)传输:将要发送的数据,源和目的地址封装的数据包中。
  4. 数据包大小限制在64k以内。
用公司发送放假通知来比喻UDP的不负责

假如到了年底放假,具体什么时候放假,人事在群里发一个放假通知,你Y的加没加群屏没屏蔽,收没收到不关他的事,他反正是通知了

使用UDP协议的协议

使用UDP(用户数据报协议)的协议主要有:

  1. DNS(域名系统):DNS用于将域名转换为IP地址。由于DNS查询和响应通常较小,且不需要建立持续的连接,因此DNS使用UDP进行通信。
  2. TFTP(简单文件传输协议):这是一种简单的文件传输协议,通常用于嵌入式系统和网络设备的固件更新。TFTP使用UDP进行数据传输。
  3. RIP(路由信息协议):RIP是一种用于在自治系统(AS)内部网关之间传递路由信息的动态路由选择协议。RIP使用UDP进行通信。
  4. DHCP(动态主机配置协议):DHCP用于自动为网络中的主机分配IP地址。DHCP客户端和服务器之间使用UDP进行通信。
  5. SNMP(简单网络管理协议):SNMP用于网络管理系统收集和管理网络设备的信息。SNMP使用UDP进行通信。

此外,还有一些实时性要求较高、数据量较小的应用场景也会使用UDP协议,例如网络视频会议系统、在线视频、网络语音电话等。

需要注意的是,虽然这些协议使用UDP进行通信,但并不意味着它们完全不依赖TCP。在某些情况下,这些协议可能会使用TCP进行辅助通信,例如当需要建立连接或进行可靠的数据传输时。

UDP例子

package com.zxs;import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;//UDP协议Socket:服务端
public class UDPServer {public static void main(String[] args) {try {DatagramSocket socket = new DatagramSocket(8082);System.out.println("服务端准备中...");while (true) {byte[] car = new byte[1024];DatagramPacket packet = new DatagramPacket(car, car.length);socket.receive(packet);int length = packet.getLength();System.out.println("接收到的数据:" + new String(car, 0, length));System.out.println("UDP协议Socket接受成功");}} catch (IOException e) {e.printStackTrace();}}
}
package com.zxs;import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.util.Scanner;public class UDPClient {public static void main(String[] args) {try {DatagramSocket socket = new DatagramSocket(2468);InetSocketAddress address = new InetSocketAddress("127.0.0.1", 8082);System.out.println("请输入你要公告的信息:");while (true) {byte[] car = new Scanner(System.in).nextLine().getBytes();DatagramPacket packet = new DatagramPacket(car, car.length,address);socket.send(packet);System.out.println("UDP协议的Socket发送成功");}} catch (Exception e) {e.printStackTrace();}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/710810.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是IP公网?

IP公网是指互联网上可以公开访问的IP地址。它是经过互联网服务提供商(ISP)向用户提供的公共网络IP地址。与之相对的是内网IP地址,内网IP地址一般是由路由器或交换机分配给连接在局域网中的设备使用。 IP公网的作用非常广泛,可以应…

C#解析JSON

https://blog.csdn.net/weixin_43046974/article/details/131449900 C#解析JSON 1. JSON定义2. JSON一般构成及解析方法3. 解析举例子 1. JSON对象解析,只包含一层对象{}2. 嵌套JSON对象解析,包含多层对象{}3. JSON数组解析1(数组循环遍历&…

Web APIs知识点讲解(阶段二)

DOM-事件基础 一.事件 1.事件 目标:能够给 DOM元素添加事件监听 事件:事件是在编程时系统内发生的动作或者发生的事情,比如用户在网页上单击一个按钮 事件监听:就是让程序检测是否有事件产生,一旦有事件触发,就立即调用一个函…

http工具类

public class HttpRequstUtil {/*** http请求方法** param message 查询条件* param url 查询地址* param token 身份验证token* param socketTimeout socket 响应时间* param connectTimeout 超时时间* return 返回字符串*/Deprecatedpublic stat…

金仕达与 DolphinDB 建立深度合作,共筑 FICC 科技创新新篇章

从“关起门做交易”到“打开门做服务”,国内 FICC 业务正经历从自营到市场化服务的转变,借助数据分析、算法交易等技术的快速发展,交易团队能够更加主动地发现市场需求,为不同客群提供更好的做市业务,FICC 交易电子化已…

打造智能汽车微服务系统平台:架构的设计与实现

随着智能汽车技术的飞速发展,微服务架构在汽车行业中的应用越来越广泛。采用微服务架构可以使汽车系统更加灵活、可扩展,并且有利于快速推出新功能和服务。本文将从设计原则、关键技术、数据安全等方面,介绍如何搭建智能汽车微服务系统平台架…

网络通信技术

▶1.分组交换技术 在网络通信中,数据通过网络节点的某种转发方式,实现从一个端系统到另一个端系统之间的数据传输技术称为数据交换技术。数据交换技术有电路交换、报文交换和分组交换,计算机网络采用分组交换技术。 分组就是源主机(如服务器…

【Python】FastAPI 项目创建 与 Docker 部署

文章目录 前言&需求描述1. 本地FastAPI1.1 Python 环境准备1.2 本地 Pycharm 创建FastAPI项目 2. Python FastAPI 部署2.1 服务器配置Python环境2.2.1 下载与配置Git、Pyenv等工具2.2.2 下载与配置Python 2.2 FastAPI 打包成镜像2.2.1 项目准备所需环境文件2.2.2 编写Docke…

毕业设计——基于springboot的聊天系统设计与实现(服务端 + 客户端 + web端)

整个工程包含三个部分: 1、聊天服务器 聊天服务器的职责一句话解释:负责接收所有用户发送的消息,并将消息转发给目标用户。 聊天服务器没有任何界面,但是却是IM中最重要的角色,为表达敬意,必须要给它放个…

入侵和攻击模拟 (BAS) 技术应用实践

文章目录 前言一、实施BAS的必要性二、实施BAS的关键步骤1、识别网络中的脆弱区域2、创建基线安全模型3、选择合适的BAS工具4、进行模拟攻击测试5、分析结果并改进三、BAS实施中的挑战1、组织的专业知识和能力有限2、改变传统工作流程3、安全预算不足4、难以与现有安全基础设施…

C语言中的不同变量初始值:深度解析与实践指南

在C语言编程领域,理解和掌握变量的初始化原理和过程是构建稳健、高效代码的基础。C语言对不同类型变量的初始化处理方式存在差异,这要求开发者明确理解并合理应用这些规则以避免潜在的运行时错误和未定义行为。本文将详细解读C语言中各类变量的初始状态设…

AI智能分析网关V4车辆违停算法在园区场景中的应用及特点

随着城市化进程的加速,车辆违停问题愈发严重,给城市交通带来了极大的困扰。为了解决这一问题,AI技术逐渐被应用于车辆违停的检测中。AI检测算法在车辆违停方面的应用,主要是通过计算机视觉技术,对道路上的车辆进行实时…

智慧灌区项目案例(甘肃省兰州市某重点灌区)

​甘肃省兰州市某重点灌区自上个世纪80年代建成后,灌溉面积达到30万亩,对推动当地农业发展发挥了重要作用。但长期以来,该灌区的水利管理仍主要依靠人工统计记录,缺乏实时监测和精细化管理。为实现灌区管理的现代化升级,甘肃水利局委托星创易联公司设计实施水利信息化项目。 项…

【Python笔记-设计模式】状态模式

一、说明 状态模式是一种行为设计模式,用于解决对象在不同状态下具有不同行为 (一) 解决问题 在对象行为根据对象状态而改变时,规避使用大量的条件语句来判断对象的状态,提高系统可维护性 (二) 使用场景 当对象的行为取决于其状态&#…

C#使用iText7将多个PDF文档合并为单个文档

使用HtmlAgilityPack抓取并分析网页内容,然后再调用PuppeteerSharp将网页生成PDF文件,最终的成果如下图所示,得到将近120个pdf文档。能看,但是不方便,需要逐个打开文档才能看到所需的内容,最好能将这些文档…

浅谈 Linux 网络编程 socket

文章目录 socket 介绍 socket 介绍 socket 被翻译成 网络套接字,这个名字实在是不好理解,我更愿意称为"插槽"。 忽略 socket 的中文名,先无脑记住两个规则: ① 记住,一个文件描述符(fd) 指向一个 socket&…

GPT-SoVITS音色克隆-模型训练步骤

GPT-SoVITS音色克隆-模型训练步骤 GPT-SoVITS模型源码一个简单的TTS后端项目 基于模型部署和训练教程,语雀 模型部署和训练教程 启动模型训练的主页面 1. 切到模型路径 /psycheEpic/GPT-SoVITS进入Python虚拟环境,并挂起执行python脚本 conda activ…

机器学习(II)--样本不平衡

现实中,样本(类别)样本不平衡(class-imbalance)是一种常见的现象,如:金融欺诈交易检测,欺诈交易的订单样本通常是占总交易数量的极少部分,而且对于有些任务而言少数样本更…

Linux信号【产生-保存-处理】

目录 前言: 1、进程信号基本概念 1.1、什么是信号? 1.2、信号的作用 2、键盘键入 2.1、ctrlc 终止前台进程 2.1.1、signal 注册执行动作 3、系统调用 3.1、kill 函数 3.2、模拟实现 myKill 3.3、raise 函数 3.4、abort 函数 4、软件条件信号…

人工智能福利站,初识人工智能,图神经网络学习,第五课

🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论…