(学习笔记)TCP基础知识

news/2024/4/19 21:01:58/

 什么是TCP?

TCP 是面向连接的、可靠的、基于字节流的传输层通信协议。

  • 面向连接:一定是[一对一]才能连接,不能像UDP协议可以一个主机同时向多个主机发送消息,也就是一对多是无法做到的;
  • 可靠的:无论网络链路中出现了怎样的链路变化,TCP都可以保证一个报文一定能够到达接收端
  • 字节流:用户消息通过TCP协议传输时,消息可能会被操作系统[分组]成多个TCP报文,如果接收端不知道消息的边界,是无法读出一个有效的用户消息的。并且TCP报文是[有序的],当前一个TCP报文没有收到的时候,即使它先收到了后面的TCP报文,那么也不能扔给应用层去处理,同时对[重复]的TCP报文会自动丢弃。

TCP头格式

序列号:在建立连接时由计算机生成的随机数作为其初始值,通过SYN包传给接收端主机,每发送一次数据,就累加一次该数据字节数的大小。用来解决网络包乱序的问题

确认应答号:指下一次期望收到的数据的序列号,发送端收到这个确认应答后可以认为在这个序号以前的数据都已经被正常接收。用来解决丢包的问题

控制位

  • ACK:该位为1时,确认应答的字段变为有效,TCP规定除了最初建立连接时的SYN包之外该位必须设置为1.
  • RST:该位为1时,表示TCP连接中出现异常必须强制断开连接。
  • SYN:该位为1时,表示希望建立连接,并在其序列号的字段进行序列号初始值的设定
  • FIN:该位为1时,表示今后不会再有数据发送,希望断开连接。当通信结束希望断开连接时,通信双方的主机之间就可以互相交换FIN位为1的TCP段。

为什么需要TCP,TCP工作在哪一层?

IP层是[不可靠]的,它不保证网络包的交付、不保证网络包的按序交付、也不保证网络包中的数据的完整性。

如果需要保障网络数据包的可靠性,那么就需要由上层(传输层)的TCP协议来负责。

因为TCP是一个工作在传输层可靠数据传输的服务,它能确保接收的网络包时无损坏、无间隔、非冗余和按序的。


TCP连接

1. 什么是TCP连接?

简单来说就是,用于保证可靠性和流量控制维护的某些状态信息,这些信息的组合,包括Socket、序列号和窗口大小称为连接。

 所以,建立一个TCP连接时需要客户端与服务端达成上述三个信息的共识。

  • Socket:由ip地址和端口号组成
  • 序列号:用来解决乱序问题
  • 窗口大小:用来做流量控制

2. 如何确定一个TCP连接?

TCP四元组可以唯一地确定一个连接,四元组包括:

源地址目标地址的字段(32位)是在IP头部中,作用是通过IP协议发送报文给对方主机。

源端口目标端口的字段(16位)是在TCP头部中,作用是告诉TCP协议应该把报文发送给哪个进程

有一个IP的服务端监听了一个端口,它的TCP最大连接数是多少?

理论计算公式:最大TCP连接数 = 客户端IP数 X 客户端的端口数

对于IPV4,客户端IP数量最多为2的32次方,客户端的端口数量最多为2的16次方,也就是服务端单机最大TCP连接数约为2的48次方(目标地址与目标端口共48位)

当然,服务器最大并发TCP连接远不能达到理论上限,会受以下因素影响:

  •  文件描述符限制:每一个TCP连接都是一个文件,如果文件描述符被占满了,就会发生Too many open files.linux可对打开的文件描述符的数量分别做了三个方面的限制:
    • 系统级:当前系统可打开的最大数量,通过cat /proc/sys/fs/file-max查看;
    • 用户级:指定用户可打开的最大数量,通过cat /etc/security/limits.conf查看;
    • 进程级:单个进程可打开的最大数量,通过cat /proc/sys/fs/nr_open查看;
  • 内存限制,每个TCP连接都要占用一定内存,操作系统的内存是有限的,如果内存资源被占满后,会发生OOM。


http://www.ppmy.cn/news/920831.html

相关文章

比较出名的视频分享网站

下面我列出几个比较出名的视频分享网站: http://www.6rooms.com/ http://www.uume.com/http://www.tvix.cn/http://www.yoqoo.com/ http://www.youtube.com/ (这个是个国外的,据说是视频分享的鼻祖) 还有一篇关于视频分享的文…

好用的在线视频网站

分享几个好用的在线视频网站,资源很全,有美剧,港剧 大师影视 https://dsys.tv/ 电影蜜蜂 https://www.idybee.com/ 555电影 https://www.o8tv.com/ 电影先生 http://dyxs11.com 高清电影下载网址 电影天堂 https://www.dygod.net/ 阳光…

几个比较好的国外网站

http://aspnet.4guysfromrolla.com/ C#http://www.codeproject.com/

几个比较好的国外学习网站

现在越来越多的开发者参与到了,或正在加入iOS等移动操作系统平台的应用开发行列中来了,iOS和Android是目前很火的开发领域。在营收方面跟Android相比iOS目前的状况更为可观。iOS相关的培训和教程也越来越多。相信国外的英文站对很多英语基础好的朋友很有…

视频解析网站

一款可以解析全网的视频网站,可本地,也可以打包至服务端使用。 下载压缩包到本地点击index.html将对应视频地址放入解析栏中,点播放即可观看将压缩包上传至对应的站点中,选择正确的访问目录,点击站点即可。解析地址来源于网络 该项目用于学习交流,严禁用于商业用途 下载地址h…

如何搭建视频网站

一、视频网站和普通网站的区别 搭建视频网站和搭建普通网站,在技术实现方案上有很大的差别,因此,当有人问我是否可以采用搭建普通网站的方法搭建视频网站时,我会明确的告诉他们不可以,否者就贻笑大方了。 视频网站与…

推荐几个视频网站

平时如果工作累了,偶尔想要休息一下可能要看一些视频,以前带宽比较大常常用迅雷看看,但是后来几个人合用一条宽带发现如果用迅雷看看别人根本没法活了,所以这里推荐几个在线视频网站,休息的时候可以看看。 1.搜狐视频…

有哪些视频素材网站值得推荐?

高质量视频素材网站,免费、可商用,建议收藏! 1、菜鸟图库 https://www.sucai999.com/video.html?vNTYwNDUx 网站有超多视频素材,全部都是高清无水印,各种类型都有,像自然、城市、动物、科技、商业等等都…

5个超好用的视频素材网站,视频剪辑必备。

推荐五个高质量视频素材网站,免费、可商用,赶紧收藏起来! 1、菜鸟图库 https://www.sucai999.com/video.html?vNTYwNDUx 网站素材非常丰富,有平面、UI、电商、办公、视频、音频等相关素材,视频素材质量很高&#xff…

国外搜索引擎+视频网站

bing: http://global.bing.com/ yahoo screen:https://screen.yahoo.com/ google、youtube被墙的替代品! 国内外的几个创业网站: 创业网论坛:http://bbs.54288.com/forum-108-1.html The Next Web:http://thenextweb.com/ 创业…

8个国外在线学习网课的网站

如今,人们在网上花费的时间越来越多,很多人都想通过网络发现一些新东西或者学到一项新知识和技能。 当然,我们可以从YouTube上免费学到一些东西,但要想系统的掌握一门知识和技术,还是通过正规大学或网上正规课程更为可…

JavaWeb_SpringCloud微服务_Day2-Nacos, Feign, GateWay

JavaWeb_SpringCloud微服务_Day2-Nacos, Feign, GateWay nacos统一配置管理配置热更新多环境配置共享 feign快速入门自定义配置性能优化最佳实践 GateWay介绍快速入门路由断言工厂过滤器全局过滤器过滤器执行顺序跨域 来源 nacos 统一配置管理 依赖<!-- nacos配置管理依赖…

PCIe常见问题定位 与错误类型

基于Linux系统的PCIe常见问题定位总结 建链问题 PCIe的拓扑和Linux的PCIe ID PCIe的建链问题比较常见&#xff0c;由于各种厂商定位PCIe的方式方法不同&#xff0c;这里我们只介绍协议的方式 如何判断当前链路状态。在介绍建链前需要补充一下PCIe设备如何查看ID。Linux系统下…

mysql报错解决方式:1449 - The user specified as a definer (‘root‘@‘%‘) does not exist

创建视图报错:1449-the user specified as a definer(ywsd0"%" does not exist 从一个数据库数据迁移到本地localhost 程序在调用到数据库的视图时报错&#xff0c;直接在数据库中打开视图时也报错&#xff0c;类似&#xff1a; mysql 1449 &#xff1a; The user …

使用Stable Diffusion和PyTorch创建艺术二维码

大家好&#xff0c;本文将介绍如何利用Stable Diffusion和PyTorch的能力来创建AI生成的QR码艺术。通过将这些技术相结合&#xff0c;可以生成独特的、具有视觉吸引力的艺术作品&#xff0c;其中包含QR码&#xff0c;为艺术作品增添了互动元素。 Stable Diffusion和PyTorch 稳…

抖音账号矩阵系统源码-开源部署开发者分享

抖音账号矩阵系统&#xff0c;短视频账号矩阵系统源码&#xff0c; 短视频矩阵是一种常见的视频编码标准&#xff0c;它通过将视频分成多个小块并对每个小块进行压缩来实现高效的视频传输。短视频多账号矩阵系统&#xff0c;通过多账号一键授权管理的方式&#xff0c;为运营人员…

wp1

攻击会话管理 首先明确会话管理是什么 同时它也有两种替代方案 这些是生成令牌时候的缺陷 接下来是处理时候的缺陷 那该怎么防御呢&#xff1f;

关于WPWS、TPWS

文章目录 概念其他 这两日vivado的时序结果中出现了TPWS Slack为负值的情况&#xff0c;荡了一下相关资料&#xff0c;算是有了一个初步了解。 概念 pulse width指的是时钟clk的高电平宽度和低电平宽度。和时钟周期一样&#xff0c;时钟的pulse width也是一个很重要的参数&…

WordPress数据库关键文件wp-config.php详解

wp-config.php 文件是WordPress数据库的关键。数据库名、用户名、密码、位置都是在此设置。但是很多用户并不知道通过wp-config.php文件可以更改很多设置&#xff0c;提高WordPress站点的功能、性能、安全度。在这里&#xff0c;这里跟大家分享下使用wp-config.php的技巧。Word…