网络通信和tcp协议

一、计算机网络架构模型

1、OSI七层模型

2、TCP/IP模型

3、TCP/IP协议族

无论是什么网络模型,都是为上一层提供服务,抽象层建立在低一层提供的服务上,每层都对应不同的协议

4、地址和端口号

1)MAC地址

MAC 地址共 48 位(6 个字节)。前 24 位由 IEEE(电气和电子工程师协会)决定如何分 配,后 24 位由实际生产该网络设备的厂商自行制定。

2)IP地址

它的本义是为互联网 上的每一个网络和每一台主机配置一个唯一的逻辑地址,用来与物理地址作区分。

3)端口号

一台机器运行多个应用程序,传输层协议正是利用这些端口号识别本机中正在 进行通信的应用程序,并准确地将数据传输。

为什么端口号有 65535 个?

因为在 TCP、UDP 协议报文的开头两个字节存储端口号,一个字节8位,所以会分别有 16 位二进制来存储源端口号和目标端口号,所以端口个数是 2^16=65536 个,但是 0 号端口用来表示所有端口,所以实际可用的端 口号是 65535 个。

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

1、TCP三次握手

为什么TCP握手需要三次? 

如果是两次握手,只是服务端确认了客户端的序列号,而客户端无法确定服务端的传输序列号,TCP是面向可靠、连接的,两次就无法保证了,至于为什么不是四次,三次已经可以确定序列号了,为什么还要四次

TCP的三次握手的漏洞-SYN洪泛攻击

三次握手中有一个第二次握手,服务端向客户端应答请求,应答请求是需要客户端IP的,而且因为握手过程没有 完成,操作系统使用队列维持这个状态(Linux 2.2 以后,这个队列大小参数可以通过 /proc/sys/net/ipv4/tcp_max_syn_backlog 设置)。于是攻击者就伪造这个 IP,往服务器端狂 发送第一次握手的内容,当然第一次握手中的客户端 IP 地址是伪造的,从而服务端忙于进 行第二次握手,但是第二次握手是不会有应答的,所以导致服务器队列满,而拒绝连接。

面对这种攻击,有以下的解决方案,最好的方案是防火墙。

2、TCP四次挥手

为什么 TCP 的挥手需要四次?

TCP 是全双工的连接,必须两端同时关闭连接,连接才算真正关闭。 如果一方已经准备关闭写,但是它还可以读另一方发送的数据。发送给 FIN 结束报文给 对方,对方收到后,回复 ACK 报文。当这方也已经写完了准备关闭,发送 FIN 报文,对方回 复 ACK。两端都关闭,TCP 连接正常关闭。 

为什么需要TIME-WAIT状态?

TIME_WAIT 状态存在的原因有两点 1、可靠的终止 TCP 连接。 2、保证让迟来的 TCP 报文有足够的时间被识别并丢弃。 根据前面的四次握手的描述,我们知道,客户端收到服务器的连接释放的 FIN 报文后, 必须发出确认。如最后这个 ACK 确认报文丢失,那么服务器没有收到这个 ACK 确认报文, 就要重发 FIN 连接释放报文,客户端要在某个状态等待这个 FIN 连接释放报文段然后回复确 认报文段,这样才能可靠的终止 TCP 连接。 在 Linux 系统上,一个 TCP 端口不能被同时打开多次,当一个 TCP 连接处于 TIME_WAIT 状态时,我们无法使用该链接的端口来建立一个新连接。反过来思考,如果不存在 TIME_WAIT 状态,则应用程序能过立即建立一个和刚关闭的连接相似的连接(这里的相似,是指他们具 有相同的 IP 地址和端口号)。这个新的、和原来相似的连接被称为原来连接的化身。新的 化身可能受到属于原来连接携带应用程序数据的 TCP 报文段(迟到的报文段),这显然是不 该发生的。这是 TIME_WAIT 状态存在的第二个原因。

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

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

相关文章

ARM映像文件组成

引言 ARM编译器将各种源文件(汇编文件、C语言程序文件、C语言程序文件)编译生成ELF格式的目标文件(后缀为.o文件,以下将目标文件简称为.o文件),.o文件经过连接器,和C/C运行时库一起编译生成ELF格…

visual studio Qt 开发环境中手动添加 Q_OBJECT 导致编译时出错的问题

问题简述 创建项目的时候,已经添加了类文件,前期认为不需要信号槽,就没有添加宏Q_OBJECT,后面项目需要,又加入了宏Q_OBJECT,但是发现只是添加了一个宏Q_OBJECT,除此之外没有改动其它的代码,原本…

十四天学会C++之第八天:文件操作

1. 文件的打开和关闭 文件操作的基本概念。打开文件:使用fstream库打开文件以供读写。关闭文件:确保文件在使用完毕后正确关闭。 文件的打开和关闭:C 文件操作入门 在C编程中,文件操作是一项重要的任务,可以读取和写…

51单片机KeyWard

eg1: 单片机键盘的分类 键盘分为编码键盘和非编码键盘,键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值得称为编码键盘,如计算机键盘,而靠软件来识别的称为非编码键盘,在单片机组成的各种…

网络协议--UDP:用户数据报协议

11.1 引言 UDP是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报。这与面向流字符的协议不同,如TCP,应用程序产生的全体数据与真正发送的单个IP数据报可能没有什么联…

党建展馆vr仿真解说员具有高质量的表现力和互动性

随着虚拟数字人应用渐成趋势,以虚拟数字人为核心的营销远比其他更能加速品牌年轻化进程和认识,助力企业在激烈的市场竞争中脱颖而出,那么企业虚拟IP代言人解决了哪些痛点? 解决品牌与代言人之间的风险问题 传统代言人在代言品牌时&#xff0…

寻找一罐app里的隐藏海

一、前言 (一)一罐app简介 一罐app 是一款小众交友软件,可以匿名or真身发布动态 (二)开发目的 因为某些原因,某些板块被隐藏起来了。(一罐称板块为xxx海) (三&#…

产品研发团队协作神器!10款提效工具大盘点!

在如今科技驱动的时代,产品研发团队面临着前所未有的竞争压力和不断变化的市场需求。为了在这个激烈的环境中脱颖而出,团队需要高效协作并充分利用先进的工具来提高生产力和创新能力。 本文将为你盘点产品研发团队协作必备的10个提效工具,这…

1-07 React配置postcss-px-to-viewport

React配置postcss-px-to-viewport 移动端适配 安装依赖:在项目根目录下运行以下命令安装所需的依赖包: npm install postcss-px-to-viewport --save-dev配置代码 const path require(path);module.exports {webpack: {alias: {: path.resolve(__di…

hive窗口函数记录

记录工作中和学习中的窗口函数,方便以后使用,本记持续更新和完善,版本:231019 文章目录 1.什么是窗口函数2.窗口函数的表达式3.窗口函数的类型1) 排名函数2) 聚合函数3) 跨行取值函数 4.[frame…

TX Text Control.NET For WPF 32.0 Crack

TX Text Control 支持VISUAL STUDIO 2022、.NET 5 和 .NET 6 支持 .NET WPF 应用程序的文档处理 将文档编辑、创建和 PDF 生成添加到您的 WPF 应用程序中。 视窗用户界面 功能齐全的文档编辑器 TX Text Control 是一款完全可编程的丰富编辑控件,它在专为 Visual Stu…

mariadbmysql更改数据库默认存储路径

1.登录数据库查询默认存储位置 默认存储在/var/lib/mysql show variables like "%datadir%"; 2.先停止服务 systemctl stop mariadb 3.移动数据文件 mv /var/lib/mysql/ /home/ 4.修改服务配置 vim /etc/my.cnf.d/server.cnf5.在 [mysqld] 下面增加 datadir/ho…

关于Fragment的生命周期,你知道多少?

Fragment生命周期 Fragment是Android中用于构建用户界面的一种组件。 Fragment具有自己的生命周期,包括以下几个阶段: onAttach(): 当Fragment与Activity关联时调用,可以通过该方法获取到所关联的Activity的引用。 onCreate(): 在Fragment创…

SOFAStack软件供应链安全产品解析——SCA软件成分分析

近年来,软件供应链安全相关攻击事件呈快速增长态势,造成的危害也越来越严重,为了保障软件供应链安全,各行业主管单位也出台了诸多政策及技术标准。基于内部多年的实践,蚂蚁数科金融级云原生PaaS平台SOFAStack发布完整的…

使用SecScanC2构建P2P去中心化网络实现反溯源

个人博客: xzajyjs.cn 前言 这款工具是为了帮助安全研究人员在渗透测试过程中防止扫描被封禁、保护自己免溯源的一种新思路。其利用到了区块链中的p2p点对点去中心化技术构建以来构建代理池。 工具链接:https://github.com/xzajyjs/SecScanC2 实验过程 该工具分为…

深圳世有伯乐教育科技有限公司——LJ培训

今天来吐槽一波 深圳世有伯乐教育科技有限公司就是一个垃圾的培训机构,不,说是培训机构都是扭曲事实了,因为它根本就没有国家认可的办学许可证。光说没法让人信服,以下是企查查的截图: 世有伯乐的工商信息图片 续上&…

线程池常见面试题总结

线程池的工作原理和实现已经在之前的文章中介绍 本文主要总结面试中线程池常问题目。 1、有几种常见的线程池(必知必会)? 1)定长线程池(FixedThreadPool) 2)定时线程池(ScheduledThreadPoo…

Java CC 解析 SQL 语法示例

示例:SimpleSelectParser 解析 select 11; 输出 2; 0)总结 编写 JavaCC 模板,*.jj 文件。 编译生成代码文件。 移动代码文件到对应的包下。 调用生成的代码文件。 1)JavaCC 模板 main/javacc/SimpleSelectParse…

数据下钻分析?图表链接一招搞定!

前言 在云计算时代,海量业务数据对企业和社会组织的运营至关重要。但这些数据的复杂性(数量庞大、种类繁多、散落在不同系统和仓库中、数据格式和标准不同)给查询和处理带来了挑战。 此时,一个统一的查询入口能实现对不同系统中数…

WAL 模式(PostgreSQL 14 Internals翻译版)

性能 当服务器正常运行时,WAL文件不断被写入磁盘。但是,这些写操作是顺序的:几乎没有随机访问,因此即使是HDD也可以处理这个任务。由于这种类型的加载与典型的数据文件访问非常不同,因此有必要为WAL文件设置一个单独的物理存储&a…