计算机网络基本概念<三>UDP和TCP协议详解

article/2025/9/22 15:37:23

目录

谈谈传输层:

UDP协议

首部说明

回显服务器代码案例 echoServer

TCP协议

TCP和UDP区别


UDP和TCP都是传输层的重要协议,也是学习网络的必备内容了,接下来这篇我们就详细分析一下这两者的内容,以及这两者的区别。

谈谈传输层:

传输层是TCP/IP协议五层模型中的第四层。它提供了应用程序间的通信,它负责数据能够从发送端传输到接收端。

其功能包括:一、格式化信息流;二、提供可靠传输

UDP协议

UDP(UserDatagramProtocol)是一个简单的面向消息的传输层协议

  • UDP 是无连接的,知道对方的IP和端口号直接进行传输就行,不需要建立连接

  • UDP 不可靠,没有任何可靠机制,即便发送失败也不会返回任何错误信息

  • UDP 面向数据报,发多少就收多少,原样发送,交给UDP的报文,UDP不会拆分或合并

  • UDP 没有拥塞控制,网络出现的拥塞不会使源主机的发送速率降低。

  • UDP 支持一对一、一对多、多对一和多对多的交互通信

  • 缓冲区:只有接收缓冲区,没有发送缓冲区,接收缓冲区满了,多的直接丢弃

首部说明

首部由四个字段构成,每个字段都是 2byte

  • 源端口: 源端口号,需要对方回信时选用,不需要时全部置0.
  • 目的端口:目的端口号,在终点交付报文的时候需要用到。
  • 长度:UDP的数据报的长度(包括首部和数据)其最小值为8(只有首部),由于长度只有16位,所有UDP一次能发送的数据最大就是 64K
  • 校验和:检测UDP数据报在传输中是否有错,有错则丢弃。

回显服务器代码案例 echoServer

    UdpServer

package echo;import java.net.*;
import java.util.Arrays;
import java.io.IOException;public class UdpServer {private static int PORT = 2222;private DatagramSocket socket;public UdpServer() throws SocketException {socket = new DatagramSocket(PORT);}public void start() throws IOException {byte[] bytes = new byte[2048];DatagramPacket receivePacket = new DatagramPacket(bytes, bytes.length);socket.receive(receivePacket);System.out.printf("ClientAddress: %s\nClientPort: %d\n",receivePacket.getAddress(),receivePacket.getPort());System.out.println("ClientData:"+ new String(receivePacket.getData(),"utf-8"));DatagramPacket sendPacket = process(receivePacket);socket.send(sendPacket);}public DatagramPacket process(DatagramPacket packet){DatagramPacket packet1 = new DatagramPacket(packet.getData(),packet.getLength(),packet.getSocketAddress());return packet1;}public static void main(String[] args) throws IOException {UdpServer server = new UdpServer();server.start();}
}

 UdpClient

package echo;import java.net.*;
import java.io.IOException;
import java.util.Scanner;public class UdpClient {public void start() throws IOException {DatagramSocket socket = new DatagramSocket();byte[] bytes = new byte[2048];System.out.println("请输入你想发送给服务器的信息:");Scanner scanner = new Scanner(System.in);String str  =scanner.nextLine();bytes = str.getBytes();DatagramPacket sendPacket = new DatagramPacket(bytes,bytes.length,new InetSocketAddress("localhost",2222));socket.send(sendPacket);DatagramPacket receivePacket = new DatagramPacket(new byte[2048],2048);socket.receive(receivePacket);System.out.println(new String(receivePacket.getData(),"utf-8"));}public static void main(String[] args) throws IOException {UdpClient client = new UdpClient();client.start();}
}

TCP协议

TCP :有连接、可靠传输、面向字节流、全双工

保证可靠性:确认应答、超时重传、连接管理(三次挥手 四次握手)

提高效率:滑动窗口、流量控制、拥塞控制

TCP和UDP区别


http://chatgpt.dhexx.cn/article/86n9vQJl.shtml

相关文章

UDP协议报文分析和主动发送UDP简单实现

UDP协议报文分析和主动发送UDP简单实现 前言一、Wireshark 报文解析1、UDP报文实例2、报文格式分析①、以太网头②、IP头③、UDP头 二、UDP主动传输数据的实现方式1、说明2、发送UDP前的约定3、ARP报文4、UDPIP报文 三、UDP报文校验1、IP校验和计算2、UDP校验和计算 前言 用 Wi…

UDP协议基本原理

UDP封装 RFC 768定义的UDP(User Datagram Protocol,用户数据报协议)以IP为下层协议。 UDP是为实现数据报(Datagram)模式的分组交换计算机网络通信而设计的。UDP对应用程序提供了用最简化的机制向网络上的另一个应用程序发送消息的方法。UDP提供无连接的、不可靠的数据报服务。…

C# 运用UDP

面试的时候偶尔会问到UDP和TCP的一个区别。 TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。举例:打电话,需要双方都接通,才能进行对话。特点:效率低,数据传输比较安全。 UDP是一种面向无连接的传输层通信…

UDP封装

大家好呀,我是请假君,今天又来和大家一起学习数通了,今天要分享的知识是UDP封装。 RFC 768定义的UDP (User Datagram Protocol,用户数据报协议)以IP为下层协议。UDP是为实现数据报(Datagram〉模式的分组交换计算机网络通信而设计的…

传输层的UDP

文章目录 一、UDP的概念及前置知识储备1. UDP基本概念2. OSI协议模型中的传输单位3. 端口3.1 端口号范围划分3.2 认识知名端口号(Well-Know Port Number)2.3 关于端口号的两个小疑问 二、UDP协议1. UDP协议端格式1.1 UDP16位校验和的具体使用1.1.1 发送方1.1.2 接收方 2. 基本特…

UDP组播

UDP组播 UDP(UserDatagram Protocol) 中文名用户数据报协议,是OSI参考模型中一种无连接的传输层协议,是一种高效但不可靠传输。UDP在IP报文中的协议号是17。 UDP传递方式 UDP有三种传输方式:单播、广播、多播。 1.单…

UDP通信

目录 1.什么是UDP通信 1.扔韭菜例子: 2.总结: 2.UDP通信:多发多收 UDP的三种通信方式: 3.UDP如何实现广播 4.UDP如何实现组播 1.什么是UDP通信 UDP是一种无连接、不可靠传输的协议。 将数据源IP、目的地IP和端口以及数据封…

UDP

概述 用户数据保协议(User Datagram Protocol,UDP)是开放系统互联模型(Open System Interconnection,OSI)中传输层协议的一种,是一种保留消息边界的简单的面向数据报的协议。UDP不提供差错纠正、…

TCP和UDP详解(非常详细)

文章目录 UDPUDP协议报文格式:UDP协议的特点:UDP的缓冲区:UDP存在接收缓冲区,但不存在发送缓冲区。 TCPTCP协议报文格式:确认应答机制:超时重传:超时重发的时间应该如何确定? 连接管理机制TIME_WAIT状态为什…

VS2008安装错误,解决方案

重新整了一下电脑,再次安装VS2008,以前安装很顺利,没想到这次安装却是失败了,各种错误,一路安装失败,再谷歌安装,最后终于安装成功,记下来,呵呵! 刚开始安装…

VS 2008的64位编译环境的安装和使用

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴! 作者:朱金灿 来源:http://blog.csdn.net/clever101 1. 安装64位编译环境 最近准备…

win7+VS2008安装boost

找了好久boost的安装教程,杂七杂八的方法有很多,说直接下载boost安装包installer,但是boostpro.com貌似挂了...所以最后还是得自己上阵,重新编译,方法综合了几个,最后终于搞定了(某些细节部分也…

VS2008安装Mercurial插件

(1)安装Mercurial或TortoiseHg. 从官网下载Mercurial或包含GUI的TortoiseHg。 (2)安装VS插件HgSccPackage。 下载VS插件HgSccPackage并安装,该插件支持VS2008和VS2010. (3)在VS中将版本控制…

在Win10 系统中安装VS 2008

安装原因:由于要对一个之前用win ce的项目进行开发维护,而win ce最多只能兼容VS2008的版本。因此现要在Win10上安装vs2008 1.由于win10系统没有自带.net Framework 3.5框架,需要我们下载一个.net Framework3.5框架的离线安装包。同时下载好VS2008的镜像。…

WIN SERVER 2008安装VS2015踩坑小结

系统:WIN SERVER 2008 Enterprise R2,未连接外网 软件:VS2015企业版 第一遍普通安装过程就不多赘述了,选择的典型安装 1、安装完成后,打开解决方案,所有项目显示加载失败,提示“项目无法加载&a…

安装VS2008(转)

原文链接 http://dev.yesky.com/msdn/329/7823829.shtml1、先用虚拟光驱将我们下载下来的文件打开: 打开后的会自动弹出一个安装对话框,如果没有的话到我的电脑里找到那个虚拟光驱将它打开就是了。安装对话框的效果如下图: 单击对话框中的Ins…

安装VS2008 SP1

最近由于在学习SQL2008,所以需要使用VS2008太耍一下关于SQL2008的新特性,尤其是Entity Framework。VS2008和SQL2008我都更新成英文版了。接下来安装VS2008的Sp1补丁,MS又使用了很恶心的网络安装,下载的Sp1才450K,然后网…

vs2008安装包及安装教程

注:本博客为原创博客,允许转载,转载时请注明出处 1.下载vs2008安装包,找不到资源的请戳这里:链接:https://pan.baidu.com/s/1dGIaPrj 密码:25dq 2.打开安装包,点击autorun进行安装 3…

VS2008安装部署应用程序安装包制作过程

制作过程 1.打开vs,新建项目->其他项目类型->安装和部署->安装项目 2、这里就会出现三个文件夹,不用多说一看就明白意思,点“应用程序文件夹–>添加–>文件夹 3、在“应用侧滑盖内需文件夹”文件夹上右键–>添加–>…

vs2008安装过程

解压SQLFULL_CHS.iso后,安装sql 2008: 重新运行安装程序后,有一个dos窗口,最后结果是成功。显示SQL Server 安装中心。 默认是在计划页面的,我点击了“系统配置检查器”,结果:操作完成,已通过13,失败0,警告0,已跳过1。 点击安装,进入安装页面。使用“全新SQL Serve…