TCP和UDP协议(深信服X计划)

文章目录

    • 一、TCP协议概述
    • 二、TCP三次握手和四次挥手
    • 三、UDP协议概述
    • 四、TCP和UDP对比及应用场景


一、TCP协议概述

TCP (Transmission Control Protocol传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由ETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP) 是同一层内另一个重要的传输协议。

TCP报文结构
在这里插入图片描述
①源端口:标识发送方的应用进程。
②目的端口:标识接收方的应用进程。
③序号:保证数据传输的有序性。
④确认号:对收到的数据进行确认。
⑤Flag字段(8位):ACK-确认号标志,置1表示确认号有效,表示收到对端的特定数据;RST-复位标志,置1表示拒绝错误和非法的数据包,复位错误的连接;SYN-同步序号标志,置1表示同步序号,用来建立连接;FIN-结束标志,置1表示连接将被断开,用于拆除连接。
⑥Option字段(可选项):MSS最大报文段长度,通过置位,协商能承载的TCP数据的大小。

TCP序列号及确认号:

在这里插入图片描述

TCP端口号:

在这里插入图片描述
源端口随机分配,目标端口使用知名端口(Well-known port) ;
应用客户端使用的源端口号一般为系统中未使用的且大于1023;
目的端口号为服务端开启的服务所侦听的端口,如HTTP缺省使用80。

TCP端口号、序列号及确认号:

在这里插入图片描述


二、TCP三次握手和四次挥手

传输机制-TCP三次握手:

在这里插入图片描述

传输机制-TCP四次挥手:

在这里插入图片描述

面向字节流:
在这里插入图片描述

流量控制-滑动窗口机制:窗口大小决定了在收到确认前可以发送的字节数。

在这里插入图片描述
在这里插入图片描述

可靠传输-停止等待协议:

在这里插入图片描述
在这里插入图片描述

拥塞控制:
在这里插入图片描述

RST标志位:用于复位因某种原因导致的错误连接,也用来拒绝非法数据和请求。如果接收到RST位,通常发生了某些错误。其可能被接收方或者中间设备置为。

RST置为的原因:①服务器端口没有打开。②服务器响应太慢,用户终止连接。③网络攻击等。


三、UDP协议概述

UDP是User Datagram Protocol的简称,中文 名是用户数据报协议,是OSI (Open System Interconnection,开放式系统互联)参考 模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。UDP在IP报文的协议号是17。

UDP报文结构:

在这里插入图片描述

UDP协议特点:
①UDP是无连接的,在传输数据之前,不需要进行复杂的三次握手来建立连接。
②在传输数据时,没有协议间通信流量(确认信号),也不需要浪费不必要的处理时间(接收确认信号再发一下)。
③传输结束后,也不用再用四次握手握手来结束连接。


四、TCP和UDP对比及应用场景

在这里插入图片描述

TCP适用场景:
①当网络硬件失效或者负担太重时,数据包可能就会产生丢失、重复、延时、乱序的现象。这些都会导致我们的通信不正常的时候。如果让应用程序来担负差错控制的工作,无疑将给程序员带来许多复杂的工作,于是,我们使用独立的通信协议来保证通信的可靠性是非常必要的。
②TCP一般用于文件传输(FTP HTTP对数据准确性要求高,速度可以相对慢),发送或接收邮件(POP IMAP SMTP对数据准确性要求高,非紧急应用), 远程登录(TELNET SSH对数据准确性有一定要求,有连接的概念)等。

UDP适用场景:
①在高效可靠的网络环境中(不需要考虑网络不好导致的丢包、乱序、延时、重复等问题),因为UDP是无连接的服务,不用消耗不必要的网络资源(TCP中 的协议间通信)和处理时间(预期确认需要的时间),从而效率要高的多。
②在轻权通信中,当需要传输的数据量很小(可以装在一个IP数据包内)时。如果我们使用TCP协议,那么,先建立连接,一共需要发送3个IP数据包,然后数据传输,1个IP数据包,产生一个确认信号的IP包,然后关闭连接,需要传输5个IP数据包。使用TCP协议IP包的利用率为1/10。而使用UDP,只需要发送一一个IP数据包。哪怕丢包(服务不成功),也可重新申请服务(重传)。UDP很适合这种客户机向服务器传送简单服务请求的环境。此类应用层协议包括TFTP,SNMP,DNS,DHCP等。
③在对实时性要求很强的通信中:在诸如实时视频直播等对实时性要求很高的环境中,从而允许一定量的丢包的情况下(直播比赛,前面丢失的包,重传出来已经意义不大了),UDP更适合。(可以根据具 体需要通过应用层协议提供可靠性,不用像TCP那么严格。)

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

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

相关文章

C语言实用算法系列之时间族函数、目录遍历

时间族函数测试 代码 #define _CRT_SECURE_NO_WARNINGS#include <stdio.h> #include <stdlib.h> #include <time.h>void main() {time_t tt;//long __int64time(&tt);tm* time localtime(&tt);char* ws[] { "日","一","…

跟踪反应流–将Spring Cloud Sleuth与Boot 2结合使用

Spring Cloud Sleuth在OpenZipkin Brave的基础上增加了对Spring工具的支持&#xff0c; 从而使Spring Boot应用程序的分布式跟踪变得异常简单。 这是一篇关于如何使用此出色的库添加对分布式跟踪支持的简要说明。 考虑两个应用程序–一个使用上游服务应用程序的客户端应用程序…

DNS域名解析协议(深信服X计划)

文章目录一、DNS协议背景二、DNS协议概述三、DNS工作原理四、DNS常用的记录及作用一、DNS协议背景 在Internet网中连接着数量众多的主机&#xff0c;要让这些主机进行通信&#xff0c;需要有一套名字标识体系&#xff0c;让主机之间能够彼此找到对方&#xff0c;我们可以用多种…

【总结】C语言实用算法系列之知识点梳理_附学生管理系统各模块代码

1、内存四区特点 a)全局区变量空间缺省每个字节为00,栈空间缺省是cc,堆缺省是cd b)堆、全局区(静态区)、字符串常量区,与栈区空间的位置距离很大,栈区访问速度可能最快; 2、C语言与C++编译器的区别: a)所有的.c文件在VC或者VS编译器中按C编译器编译; b)所有的.cp…

基于51单片机的温度检测监测报警系统设计

前些天发现了十分不错的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;没有广告&#xff0c;分享给大家&#xff0c;大家可以自行看看。&#xff08;点击跳转人工智能学习资料&#xff09; 微信公众号&#xff1a;创享日记 发生关键词&#xff1a;单片…

【1】C++语法与数据结构之C语言学生管理系统转C++学生管理系统

从本文开始,后续将陆续发布C++语法与数据结构的相关内容,同样还是以学生管理系统来融汇贯通所有知识点。 接上篇博客【终极完美高效】C语言实用算法系列之学生管理系统_单向链表外排序_堆内数组存储链表节点指针_函数指针数组C++中定义CStudent类 文件名:Student.h typede…

rest 验证demo_如何实现REST资源的输入验证

rest 验证demo如何实现REST资源的输入验证 我正在使用的SaaS平台具有一个RESTful接口&#xff0c;该接口可以接受XML有效负载。 实施REST资源 对于像我们这样的Java商店&#xff0c;使用JAX-B从XML Schema生成JavaBean类是有意义的。 在像Jersey的JAX-RS环境中&#xff0c;使…

校园点餐系统:点餐、食堂管理、商户管理和菜品管理(Java和MySQL)

微信公众号&#xff1a;创享日记 发送关键词&#xff1a;校园点餐系统 获取报告数据库设计说明项目源码源文件工程文件 1 实验环境 操作系统&#xff1a;Windows 10&#xff0c;主要开发工具&#xff1a;PowerDesign&#xff0c;MySQL&#xff0c;Eclipse 2 实验过程 2.1 系统…

病情预测:指示病情程度、预测病情指标(深度学习和Python)

前些天发现了十分不错的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;没有广告&#xff0c;分享给大家&#xff0c;大家可以自行看看。&#xff08;点击跳转人工智能学习资料&#xff09; 微信公众号&#xff1a;创享日记 发送关键词&#xff1a;病情…

QueryDSL中包含通配符的字符串的精确匹配

在我们最近的一个项目中&#xff0c;我们的客户要求一个搜索字段&#xff0c;该字段可以搜索名字&#xff0c;姓氏和电子邮件地址&#xff0c;唯一的通配符是星号“ *”&#xff0c;表示部分匹配。 听起来很简单&#xff0c;但它使我们陷入了混乱。 在我们的项目中&#xff0c;…

邮件系统(基于SMTP协议和POP3协议-C语言实现)

前些天发现了十分不错的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;没有广告&#xff0c;分享给大家&#xff0c;大家可以自行看看。&#xff08;点击跳转人工智能学习资料&#xff09; 微信公众号&#xff1a;创享日记 发送关键词&#xff1a;邮件…

arp、ethernet、icmp、udp、ip协议的C语言实现(计算机网络协议栈实验)

前些天发现了十分不错的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;没有广告&#xff0c;分享给大家&#xff0c;大家可以自行看看。&#xff08;点击跳转人工智能学习资料&#xff09; 微信公众号&#xff1a;创享日记 发送关键词&#xff1a;协议…

jpa获取session_JPA 2 | 获取联接以及我们是否应该使用它们

jpa获取session介绍 最近&#xff0c;我一直在与JPA 2中的FETCH JOINS一起使用&#xff0c;以期从数据库中急切地获取数据&#xff0c;并且我学到了很多关于为什么在日常操作中应避免使用Fetch Joins的知识。 今天的博客文章谈论了我在Fetch上的经历和学习&#xff08;主要基于…

CPU设计(单周期和流水线)

前些天发现了十分不错的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;没有广告&#xff0c;分享给大家&#xff0c;大家可以自行看看。&#xff08;点击跳转人工智能学习资料&#xff09; 微信公众号&#xff1a;创享日记 发送关键词&#xff1a;cpu …

使用AWS Lambdas扩展技术堆栈

面对现实吧。 调试性能问题很困难&#xff0c;但更难解决。 假设您发现了令人反感的代码&#xff0c;这些代码正在拖慢您的应用的运行速度。 最终会有一段时间&#xff0c;您发现该代码减速是同步的或线性执行的。 解决这些有问题的代码段的最有效方法之一是将最重的工作负载委…

前馈-反馈控制系统设计(过程控制课程设计matlab/simulink)

前些天发现了十分不错的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;没有广告&#xff0c;分享给大家&#xff0c;大家可以自行看看。&#xff08;点击跳转人工智能学习资料&#xff09; 微信公众号&#xff1a;创享日记 发送关键词&#xff1a;前馈…

感应电机直接转矩控制系统的设计与仿真(运动控制matlab/simulink)

前些天发现了十分不错的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;没有广告&#xff0c;分享给大家&#xff0c;大家可以自行看看。&#xff08;点击跳转人工智能学习资料&#xff09; 微信公众号&#xff1a;创享日记 发送关键词&#xff1a;直接…

【2】C++语法与数据结构之MFC_CList学生管理系统_链表内排序_函数指针

MFC中CList类库的遍历 #include <iostream> #include "List.h" using namespace std; void main() {CList list;list.AddHead(33);list.AddHead(88);list.AddHead(99);POSITION pos list.GetHeadPosition();cout << "正向&#xff1a;" <…

neo4j cypher_neo4j / cypher:悬挂查询参数

neo4j cypher一直以来&#xff0c;我一直在使用neo4j的密码查询语言&#xff0c; 迈克尔一直在告诉我在查询中使用参数&#xff0c;但是查询的性能始终可以接受&#xff0c;因此我没有必要。 但是&#xff0c;最近我正在研究一个数据集&#xff0c;并使用类似于以下的代码创建了…

双容水箱液位模糊PID控制系统设计与仿真(Matlab/Simulink)

前些天发现了十分不错的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;没有广告&#xff0c;分享给大家&#xff0c;大家可以自行看看。&#xff08;点击跳转人工智能学习资料&#xff09; 微信公众号&#xff1a;创享日记 发送&#xff1a;双容模糊 获…