tcp与udp的总结+connect阻塞+tcp三次握手、四次挥手+常见的服务器IO(发送数据+接收数据)模型

news/2024/9/18 3:43:05/文章来源:https://www.cnblogs.com/hhail08/p/18367946

一,TCP与UDP的基本总结

TCP(传输控制协议)和UDP(用户数据报协议)是两种主要的传输层协议。TCP是面向连接的,提供可靠、顺序的传输,适用于需要高可靠性的应用,如网页浏览和文件传输。它通过重传机制和流量控制确保数据完整性。UDP是无连接的,速度快但不保证数据的可靠性和顺序,适用于对实时性要求高的应用,如视频流和在线游戏。TCP在数据传输前建立连接,进行数据确认和重传,而UDP则简单直接,不进行连接建立或确认。


image


二、何种情况下connect会阻塞

TCP 三次握手过程中:在客户端调用 connect() 函数后,TCP 连接的建立需要经过三次握手过程。在这个过程中,如果服务器没有响应或者响应延迟,客户端的 connect() 函数会一直阻塞等待直到连接建立成功或者超时。

非阻塞套接字设置:如果将套接字设置为非阻塞模式,即在调用 connect() 前通过 fcntl() 函数设置了 O_NONBLOCK 标志,那么 connect() 将会立即返回,无论连接是否建立成功。在这种情况下,可以通过 select()、poll() 或 epoll() 等函数来检查连接是否建立成功,或者设置超时时间来控制连接操作。调用read的时候不堵塞(read(套接字,数组,数组大小);

目标地址不可达或网络问题:如果目标地址不可达、网络问题或者服务器端未处于监听状态,connect() 也会阻塞等待直到超时。
连接队列已满:在客户端与服务器建立连接时,服务器会维护一个连接队列来接受客户端的连接请求。如果连接队列已满,客户端的 connect() 调用将会阻塞,直到服务器接受了新的连接或连接超时。


三、TCP连接特性--- 三次握手,四次挥手

自导自演协议
三次握手:
第一次握手:客户端发送连接请求
第二次握手:服务器回应收到客户端的连接请求,并且告诉客户端可以连接
第三次握手:客户端回应服务器我收到你让我能连接的消息了
开始连接

本次发送的序列号seq是上一次的确认号ack 本次发送的ack是上一次的seq+1

四次挥手:
第一次挥手:客户端发送断开连接请求
第二次挥手:服务器回应客户端收到了断开连接的请求,准备断开
第三次挥手:服务器回应客户端准备好了,可以断开
第四次挥手:客户端回应服务器收到可以断开的请求
开始断开
image


四、常见的服务器IO(发送数据+接收数据)模型

阻塞式IO模型(Blocking IO Model):在这种模型中,当应用程序调用IO操作时,它会被阻塞,直到操作完成并返回结果。这意味着在等待IO操作完成的同时,应用程序无法执行其他任务。这种模型最适合于对实时性要求不高的应用程序。

非阻塞式IO模型(Non-Blocking IO Model):在这种模型中,应用程序IO操作和多路复用的时候会会立即返回,而不会等待IO操作完成。如果操作没有立即完成,则应用程序将继续执行其他任务。应用程序需要重复执行轮询操作来检查IO操作是否完成。这种模型适用于需要高实时性的应用程序。

IO复用模型(IO Multiplexing Model):在这种模型中,应用程序使用非阻塞IO操作向多个socket发起请求,并使用select()或poll()等系统调用来等待其中任何一个socket上的IO操作完成。当某个socket上的IO操作完成时,应用程序会收到通知并处理相应的IO事件。这种模型适用于需要同时处理多个socket连接的应用程序。

异步IO模型(Asynchronous IO Model):在这种模型中,当应用程序发起IO操作时,它会立即返回,并继续执行其他任务。当IO操作完成时,应用程序会收到通知并处理相应的IO事件。这种模型适用于需要同时处理多个IO操作的高并发应用程序。

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

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

相关文章

tcp与udp的总结+connect阻塞+tcp三次握手、四次挥手

一,TCP与UDP的基本总结 TCP(传输控制协议)和UDP(用户数据报协议)是两种主要的传输层协议。TCP是面向连接的,提供可靠、顺序的传输,适用于需要高可靠性的应用,如网页浏览和文件传输。它通过重传机制和流量控制确保数据完整性。UDP是无连接的,速度快但不保证数据的可靠性…

【Linux_install】详细的Ubuntu和win双系统安装指南

@目录1.前期准备1.1 制作启动盘1.2关闭快速启动、安全启动、bitlocker1.2.1 原因1.2.2 进入BIOSshell命令行进入BIOSwindows设置中高级启动在开机时狂按某个键进入BIOS1.2.3 关闭Fast boot和Secure boot1.3 划分磁盘空间1.3.1 查看目前的虚拟内存大小2.开始安装2.1 使用启动盘启…

OpenCV-Python系列之对极几何

点击查看代码 import numpy as np import cv2 as cv img1=cv.imread("data1/1.png",0) # queryimage left image img2=cv.imread("data1/2.png",0) # trainimage right image sift=cv.SIFT_create() # sift1=cv.xfeatures2d.SIFT_create()kp1,des1=sift.d…

Centos7使用RPM包安装Oracle21c数据库(EE)

Centos7使用RPM包安装Oracle21c数据库(EE) 官方下载链接21c标准版 安装包信息: 文件名:LINUX.X64_213000_db_home.zip (64-bit) (3,109,225,519 bytes) (sha256sum - c05d5c32a72b9bf84ab6babb49aee99cbb403930406aabe3cf2f94f1d35e0916)21c xe版 安装包信息: 文件名:ora…

相交两圆

这篇写的太早了,我自己也看不懂,现在找不到啥基础题适合放了。反正把构型掌握了就好。 Reim引理如图,两圆交于 \(A,B\) 两点,若 \(CD,EF\) 是两圆的弦,满足 \(CAE,DBF\) 分别共线,则 \(CD//EF\) 逆定理:若 \(ABCD\) 共圆,\(E,F\) 分别在 \(CA,DB\) 的延长线上,并满足 …

Centos7使用RPM包安装Oracle21c数据库(XE)

Centos7使用RPM包安装Oracle21c数据库(XE) 官方下载链接21c标准版 安装包信息: 文件名:LINUX.X64_213000_db_home.zip (64-bit) (3,109,225,519 bytes) (sha256sum - c05d5c32a72b9bf84ab6babb49aee99cbb403930406aabe3cf2f94f1d35e0916)21c xe版 安装包信息: 文件名:ora…

工厂模式

工厂模式 核心本质: 实例化对象不使用new,用工厂方法创建对象 使用工厂统一管理对象的创建,将调用者跟实现类解耦 三种模式:简单工厂模式建立一个工厂类,对实现了同一接口的一些类进行实例的创建。优点是比较好理解,简单易操作。 缺点是类的创建依赖工厂类,如果想要拓展…

【OpenCV教程】滤波和边缘检测的过程

@目录1.均值滤波1.1 卷积核形状1.2 API1.3 效果2.高斯滤波2.1 卷积核形状2.2 API2.3 效果3.中值滤波3.1 原理3.2 API3.3 效果4.高斯双边滤波4.1 原理4.2 API4.3 效果5.获取用来形态学操作的滤波器6.腐蚀和膨胀(对二值图)6.1 原理6.2 腐蚀API6.3 效果6.4 膨胀API6.5 效果7.形态…

Excel公式和基本函数

输入完公式,点击回车,即可显示出值,<>是不等号

03-Matlab数组与矩阵

数组的建立和操作数组算术运算数组信息获取矩阵的建立矩阵的扩展矩阵的块操作矩阵中元素的删除赋值为一对方括号 矩阵的转置加点不转置为共轭复数 没点的转置为共轭复数 矩阵的旋转矩阵的翻转矩阵尺寸的改变矩阵加减法矩阵乘法矩阵除法矩阵中元素查找矩阵元素排序矩阵元素求和矩…

云音乐贵州机房迁移总体方案回顾

一、背景 2023年确定要将云音乐整体服务搬迁至贵州机房,项目需要在各种限制条件下,保障2000+应用、100w+QPS的服务稳定迁移,是云音乐历史上规模最大、人员最多、难度最高的技术项目。在此过程中,解决了大量历史技术债务,同时化解了大量新增系统性风险。以下为总体方案回顾…