计算机网络基本概念<三>UDP和TCP协议详解
目录
谈谈传输层:
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区别
计算机网络基本概念<三>UDP和TCP协议详解相关推荐
- 计算机网络 | 传输层 :UDP与TCP协议详解
传输层 UDP UDP的协议格式 UDP的特点 基于UDP的应用层知名协议 UDP如何实现可靠传输 TCP TCP的协议格式 TCP的特点 连接管理机制 三次握手 四次挥手 保活机制 问题补充 可靠传 ...
- UDP与TCP协议详解
目录 前言 再谈端口号 端口号划分规范 常见的知名端口号 UDP协议 UDP协议段格式 UDP协议的特点 UDP的缓冲区 UDP使用注意事项 基于UDP的应用层协议 TCP协议 TCP协议段格式 TC ...
- 网络协议分析 | 传输层 :史上最全UDP、TCP协议详解,一篇通~
文章目录 UDP 概念 格式 UDP如何实现可靠传输 基于UDP的应用层知名协议 TCP 概念 格式 保证TCP可靠性的八种机制 确认应答.延时应答与捎带应答 超时重传 滑动窗口 滑动窗口协议 后退n ...
- Linux网络编程-UDP和TCP协议详解
1|0一. 引言 网络协议是每个程序员都要掌握的基础知识,干啥都离不开网络,就算在家里新买了个路由器不是吗,同事连不上网,你的女朋友手机没有网看剧了正看到高潮部分,到那时候你打开百度......那嫌弃 ...
- Linux网络-UDP/TCP协议详解
Linux网络-UDP/TCP协议详解 零.前言 一.UDP协议 二.TCP协议 1.应答机制 2.序号机制 3.超时重传机制 4.连接管理机制 三次握手 四次挥手 5.理解CLOSE_WAIT状态 ...
- IP协议和TCP协议详解
IP协议和TCP协议详解 IP协议 IP协议的特点 IPV4头部信息 IP分片 重定向 IPV6头部结构 TCP协议 TCP协议的特点 TCP头部结构 TCP连接的建立与关闭 异常终止连接 异常终止连 ...
- 【工控老马】西门子PLC Siemens PLC TCP协议详解
Siemens PLC TCP 协议详解 说明:蓝色文字表示已经破解部分,[红色文字] 表示对破解部分数字的说明,黑色文字表示对破解部分的进一步说明,黑色斜体加粗文字表示未破解部分,高亮文字部分表示驱 ...
- 计算机网络应用层(二):DNS协议详解
DNS协议详解 前言 DNS协议概述 DNS工作原理 DNS缓存 DNS记录和报文 资源记录 DNS报文 总结 前言 DNS是计算机网络中应用层的一个协议,可能很多同学碰到过DNS被劫持的情况,我们现 ...
- IP/TCP协议详解
系列文章目录 第一篇 : TCP/IP协议详解 第二篇 : IP协议 第三篇 : TCP协议 第四篇 : 面试准备 文章目录 系列文章目录 前言 第一章.TCP/协议族 1.1 层次介绍 1.2 封装 ...
最新文章
- 深度 | 一文读懂“情感计算”在零售中的应用发展
- 磁珠 磁环 双向二极管 TVS二极管
- 计算机游戏的英语怎么写,电脑游戏英语怎么写
- 第13步 用户模块前端(Admin)
- OpenCV与图像处理学习五——图像滤波与增强:线性、非线性滤波、直方图均衡化与Gamma变换
- java default parameter_JAVA菜鸟入门(7) default parameter , float/double vs BigDecimal
- 7-3 括号匹配 (15 分)
- (二)jquery学习----jquery的效果
- python是什么 自学-你们都是怎么自学python的?
- java浮点运算很难_关于Java:浮点运算不能产生精确结果
- oracle ora 16047,令人误解的ORA-16047: DGID mismatch between destination setting and target database...
- 推荐几个代码自动生成器,神器
- 10月22日Ajax培训日记
- IMX6 dts 配置GPIO
- java计算机毕业设计个人交友网站源码+数据库+系统+lw文档+mybatis+运行部署
- 考研:中国科学院地理所历年GIS研究生入学考试真题汇总
- 03.怎样调试学习mico-demos?
- 【jzoj1965】【递推】【普组模拟赛】马球比赛
- SUHO2018校招笔试
- Python3飞机大战全代码(亲测OJBK)