【Tcp和Udp】

news2024/11/20 20:20:31

udp和tcp

  • Tcp
    • Tcp协议的断开与连接
    • Tcp的状态转移
    • 复位报文段
    • 交互数据流与成块数据流
    • 流式服务特点
    • 应答确认与超时重传
    • 滑动窗口
    • 拥塞控制
  • Udp协议特点

Tcp

Tcp协议的断开与连接

Tcp协议提供的是:面向连接,可靠的,字节流服务。
使用Tcp协议通信的双方必须先建立连接,然后才能开始数据的读写。双方都必须为连接分配必要的内核资源,以管理连接的状态和连接上数据的传输。Tcp连接是全双工的,双方的数据可以通过一个连接进行读写。完成数据从交换之后,通信双方都必须断开连接以释放系统资源。
使用 tcpdump 可以抓包观察 TCP 连接的建立与关闭。该命令需要管理员权限,格式如下(假设两个测试用的主机 IP 地址为 192.168.43.214 和 192.168.43.160 ) :

tcpdump -i eth0 -nt ‘(src 192.168.43.214 and dst 192.168.1.160 ) or ( src 192.168.43.160 and dst 192.168.43.214 )

三次握手发生在客户端建立连接(connect)的时候,返回成功就表示三次握手已经建立。
四次挥手发生在服务器或客户端断开连接(close)的时候。

Tcp的状态转移

Tcp连接的任意一端在任一时刻都处于某种状态,当前状态可以通过netstat命令查看。
在服务器与客户端连接的时候,主动关闭的一端会出现一种TIME_WAIT状态,该状态出现后会维持2MSL的时间,才会完全关闭。MSL是Tcp报文段在网络中的最大生存时间,标准文档RFC1122的建议是2min。
这种状态存在的原因有两点如下:

  • 可靠的终止TCP连接。
  • 保证让迟来的TCP报文有足够的时间被世界并被丢弃。
    在linux系统上,一个TCP 端口不能被同时打开多次。当一个Tcp连接处于TIME_WAIT状态时,我们将无法立即使用该连接占用着端口来建立一个新连接。如果确实需要强制进程立即使用处于TIME_WAIT状态的连接所占用的端口,setsockopt()方法设置socket选项SO_REUSEADDR来完成。

复位报文段

在某些特殊条件下,Tcp连接的一端会向另一端发送携带RST标志的报文段,即复位报文段,已通知对方关闭连接或者重新建立连接。
发送复位报文段的可能举例:

  • 当客户端程序访问一个不存在的端口时,目标主机给他发送一个复位报文段,
  • 异常终止连接。正常状况下,数据交换完成之后,一方给另一方发送FIN结束报文段。TCP提供了异常终止一个连接的方法,即给对方发送一个复位报文段。一旦发送了复位报文段,发送端所有排队等待发送的数据都将被丢弃。。应用程序可以使用socket选项SO_LINNGER来设置发送复位报文段,以异常终止连接。
  • 处理半打开连接。例如Tcp一端关闭了连接,由于网络故障对方没有收到结束报文,对方误以为连接正常。处于这种状态的连接称为半打开连接。此时如果对端向连接写入数据,则会收到本段回复的复位报文段。

交互数据流与成块数据流

Tcp按照携带应用程序数据长度可以分为两种:交互数据和成块数据。交互数据仅包含很少的字节。受用交互数据的应用程序对实时性要求极高,比如telnet,ssh等。成块数据从的长度则是通过为Tcp报文段允许的最大数据从长度;使成块数据从的应用程序对传输效率要求高,比如FTP。

流式服务特点

Tcp字节流的特点,发送端执行的写操作次数和接收端执行的读操作次数之间没有任何数量关系,应用程序对数据从的发送和接收时没有边界限制的。

应答确认与超时重传

TCP 发送的报文段是交给 IP 层传送的。但 IP 层只能提供尽最大努力的服务,也就是说,TCP 下面的网络所提供的是不可靠的传输。因此,TCP 必须采用适当的措施才能使两个运输层之间的通信变得可靠。TCP 的可靠传输是通过使用应答确认和超时重传来完成。

滑动窗口

TCp是通过滑动窗口来实现流量控制的。流量控制就是控制发送方发送数据的速度,让接收方来得及接收。
是接收端告
诉发送端自己还有多少缓冲区可以接收数据。于是发送端就可以根据这个接收端的处理能力来发送数据,而不会导致接收端处理不过来。所以发送端就会有一个发送窗口,这个发送窗口的大小是由接收端填充的接收通告窗口的大小决定的,并且窗口的位置会随着发送端数据的发送和接收到接收端对数据的确认而不断的向右滑动,将之称为滑动窗口。

拥塞控制

在计算机网络中的链路容量(即带宽)、交换结点中的缓存和处理机等,都是网络的资源。在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种情况就叫做拥塞。所谓拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。拥塞控制是一个全局性的过程,涉及到所有主机,所有路由器,以及与降低网络传输性能有关的所有因素。
几种拥塞控制的方法:

  • 慢开始
  • 拥塞避免
  • 快速重传
  • 快速恢复

Udp协议特点

Udp数据包服务特点:发送端应用程序每执行一次写操作,UDp魔魁啊就将其封装成一个UDP数据报发送。接收端必须及时针对每一个UDP数据报执行读写操作,否则就会丢包。并且,如果没有指定足够的应用程序缓冲区来读取UDP数据,则UDP数据将被截断。
Udp连接:
服务器:
在这里插入图片描述
客户端:在这里插入图片描述

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

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

相关文章

java封装继承多态详解

1.封装 所谓封装,就是将客观事物封装成抽象的类,并且类可以把数据和方法让可信的类或者对象进行操作,对不可信的类或者对象进行隐藏。类就是封装数据和操作这些数据代码的逻辑实体。在一个类的内部,某些属性和方法是私有的&#…

自学大数据第三天~终于轮到hadoop了

前面那几天是在找大数据的门,其实也是在搞一些linux的基本命令,现在终于轮到hadoop了 Hadoop hadoop的安装方式 单机模式: 就如字面意思,在一台机器上运行,存储是采用本地文件系统,没有采用分布式文件系统~就如我们一开始入门的时候都是从本地开始的; 伪分布式模式 存储采用…

openpnp - 判断吸嘴是否指定了正确的旋转轴

文章目录openpnp - 判断吸嘴座是否指定了正确的旋转轴概述笔记吸嘴单独矫正的时候Calibrate precise camera ↔ nozzle N1 offsets.ENDopenpnp - 判断吸嘴座是否指定了正确的旋转轴 概述 如果没有指定吸嘴座的正确旋转轴, 会因为对应吸嘴该旋转时不旋转, 而是另外一个空闲的吸…

Linux学习记录——십삼 程序地址空间

文章目录1、了解程序地址测试代码2、理解程序地址空间3、程序地址空间存在的意义1、了解程序地址测试代码 1 #include <stdio.h>2 #include <assert.h>3 #include <unistd.h>4 5 int g_value 100;6 int main()7 {8 pid_t id fork();9 assert(id &g…

设计模式之结构型模式

1、代理模式1.1 静态代理1.2 jdk 动态代理1.3 CGLIB 动态代理1.4 优缺点2、适配器模式2.1 类适配器模式2.2 对象适配器模式2.3 JDK 源码解析3、装饰者模式3.1 JDK 源码解析3.2 代理模式与装饰者模式的区别4、桥接模式5、外观模式6、组合模式6.1 组合模式的分类6.2 优点及使用场…

ZincSearch Java 客户端教程

ZincSearch Zinc 简单、强大&#xff0c;不了解的同学可以参见我之前的博客。今天我们这里谈谈 Java 环境如何集成 Zinc 客户端&#xff0c;跟如何使用的。 安装 Zinc 到 Github 的官方 Releases 下载&#xff1a; 我的是 Windows 开发环境&#xff0c;下载 zincsearch_0.4…

基于支持向量机SVM的面部表情分类预测

目录 支持向量机SVM的详细原理 SVM的定义 SVM理论 Libsvm工具箱详解 简介 参数说明 易错及常见问题 SVM应用实例,基于SVM的面部表情分类预测 代码 结果分析 展望 支持向量机SVM的详细原理 SVM的定义 支持向量机(support vector machines, SVM)是一种二分类模型,它的基本…

【网络】-- 网络编程套接字(铺垫、预备)

目录 理解源IP地址和目的IP地址 认识端口号 端口号 理解源端口号和目的端口号 套接字 认识TCP与UDP协议 网络字节序 socket编程接口 socket 常见API sockaddr结构 理解源IP地址和目的IP地址 就如同我们唐僧的取经路&#xff1a; 唐僧的出发地到目的地&#xff1a;东…

阿尔法开发板 .bin 文件烧写

一. IMX6ULL 开发板简介 IMX6ULL 开发板是正点原子提供的阿尔法开发板&#xff0c;所用芯片为恩智浦&#xff0c;基于 Cortex-A7 架构。 这里介绍一下裸机篇中&#xff0c;关于如何将 .bin 文件烧写进 SD 卡&#xff0c;从而设备运行程序。 二. xx.bin 文件烧写 IMX6ULL支…

句子的改写和扩写

目录 1.句子改写 2.句子扩写 &#xff08;不低于15个句子算是长句子&#xff0c;不能太多长句子&#xff09; 1.句子改写 我绝不会嫁给你的。 如果你是世界上最后一个男人&#xff0c;我就去寺庙。 If you married me,I would jump into the well. 如果你嫁给我&#xff0c;我…

【Java学习笔记】5.Java 基本数据类型

Java 基本数据类型 变量就是申请内存来存储值。也就是说&#xff0c;当创建变量的时候&#xff0c;需要在内存中申请空间。 内存管理系统根据变量的类型为变量分配存储空间&#xff0c;分配的空间只能用来储存该类型数据。 因此&#xff0c;通过定义不同类型的变量&#xf…

计算机网络的166个概念你知道几个 第三部分

广播&#xff1a;我们一般小时候经常会广播体操&#xff0c;这就是广播的一个事例&#xff0c;主机和与他连接的所有端系统相连&#xff0c;主机将信号发送给所有的端系统。 多播&#xff1a;多播与广播很类似&#xff0c;也是将消息发送给多个接收主机&#xff0c;不同之处在于…

最近一年我都干了什么——反思!!

过去一年不管是学习方式还是心态上都和以往有了许多不同的地方&#xff0c;比较昏昏沉沉。最近慢慢找到状态了&#xff0c;就想赶紧记录下来。 学习 在学习新技术的过程中开始飘了&#xff0c;总感觉有了一些开发经验后就觉得什么都不用记&#xff0c;知道思路就行遇到了现场百…

15、正则表达式

目录 一、元字符 二、限定修饰符 一、元字符 正则表达式通常被用于判断语句中&#xff0c;用来检查某一字符串是否满足某一格式。正则表达式是含有一些具有特殊意义字符的字符串&#xff0c;这些特殊字符称为正则表达式的元字符。例如&#xff0c;“\\d”表示数字0~9中的任何…

BUU [ZJCTF 2019]Login

这是一道让我感觉很淦的题&#xff0c;整一天了才大致了解了来龙去脉 开始&#xff1a; 首先丢到虚拟机checksec一下看看有啥保护措施&#xff1a; 看到开了Canary&#xff0c;就已经感觉不妙了&#xff0c;接着丢到IDA里看看啥情况 一看&#xff0c;是令人痛苦的c风格的代码…

IDEA中使用Tomcat的两种方式:集成本地Tomcat使用Tomcat Maven插件

一、前言 在IDEA中创建完一个Maven Web项目&#xff0c;并补齐了目录以后&#xff0c;准备使用Tomcat时&#xff0c;就需要在自己创建的项目中去部署Tomcat&#xff0c;前文已经介绍了如何创建Maven Web&#xff0c;所以这里就不多加赘述&#xff0c;直接讲述部署Tomcat的方法…

fastadmin后台登录页修改

直接替换就行 <!DOCTYPE html> <html lang"{$config.language}"> <head>{include file"common/meta" /}<style type"text/css">body {color: #999;background-color: #f1f4fd;background-size: cover;}a {color: #444;…

[极客大挑战 2019]EasySQL 1

[极客大挑战 2019]EasySQL 1解题POC一、解题思路之暴力破解1. 弱口令2. 暴力破解二、解题思路之万能密码1. 什么是万能密码2. 测试过程解题POC 直接点击登录获取flagflag{62f0d2ca-579e-450e-941f-5f7c23a8baf7} 一、解题思路之暴力破解 这题是万能密码&#xff0c;所以暴力破解…

推荐一个.Net Core开发的Websocket群聊、私聊的开源项目

更多开源项目请查看&#xff1a;一个专注推荐.Net开源项目的榜单 今天给大家推荐一个使用Websocket协议实现的、高性能即时聊天组件&#xff0c;可用于群聊、好友聊天、游戏直播等场景。 项目简介 这是一个基于.Net Core开发的、简单、高性能的通讯组件&#xff0c;支持点对点…

面试题---CSS

面试题---CSS子绝父相下&#xff0c;子百分比的问题两栏布局问题三栏布局问题---圣杯问题(三栏&#xff0c;左右固定&#xff0c;中间自适应)。内联样式与块级样式的区别怎么让一个 div 水平垂直居中分析比较 display: none 、visibility: hidden、opacity: 0优劣和适用场景css…