三次握手

网络7层架构+TCP/IP原理

怎甘沉沦 提交于 2020-03-12 08:23:40
7 层模型主要包括: 1. 物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率 等。它的主要作用是传输比特流(就是由 1、0 转化为电流强弱来进行传输,到达目的地后在转化为 1、0,也就是我们常说的模数转换与数模转换)。这一层的数据叫做比特。 2. 数据链路层:主要将从物理层接收的数据进行 MAC 地址(网卡的地址)的封装与解封装。常把这 一层的数据叫做帧。在这一层工作的设备是交换机,数据通过交换机来传输。 3. 网络层:主要将从下层接收到的数据进行 IP 地址(例 192.168.0.1)的封装与解封装。在这一层工 作的设备是路由器,常把这一层的数据叫做数据包。 4. 传输层:定义了一些传输数据的协议和端口号(WWW 端口 80 等),如:TCP(传输控制协议, 传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据),UDP(用户数据报协议, 与 TCP 特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如 QQ 聊天数据就是通过这 种方式传输的)。 主要是将从下层接收的数据进行分段进行传输,到达目的地址后在进行重组。 常常把这一层数据叫做段。 5. 会话层:通过传输层(端口号:传输端口与接收端口)建立数据传输的通路。主要在你的系统之间 发起会话或或者接受会话请求(设备之间需要互相认识可以是 IP 也可以是 MAC 或者是主机名) 6

浅谈TCP半连接攻击与全连接攻击

与世无争的帅哥 提交于 2020-03-11 02:30:23
全连接攻击: 所谓的全连接攻击说的就是客户端仅仅“连接”到服务器,然后再也不发送任何数据,直到服务器超时后处理或者耗尽服务器的处理进程。 为何不发送任何数据呢?因为一旦发送了数据,服务器检测到数据不合法后就可能断开此次连接,如果不发送数据的话,很多服务器只能阻塞在recv或者read调用上。 很多的服务器架构都是每连接一个进程的方式,这种服务器更容易受到全连接攻击,即使是进程池/线程池的方式也不例外,症状就是服务器主机建立了大量的客户端处理进程,然后阻塞在recv/read而无所事事,大量的这种连接会耗尽服务器主机的处理进程。 如果处理进程数量达到了主机允许的最大值,那么就会影响到该主机的正常运作,比如你再也无法ssh到该主机上了。 半连接攻击 半连接攻击是一种针对协议栈的攻击,或者说是一中针对主机的攻击,皮之不存毛将焉附,主机一旦被攻击而耗尽了内存资源,用户态的应用程序也将无法运行。 半连接攻击是一种攻击协议栈的攻击方式,坦白说就是攻击主机的一种攻击方式。通过将主机的资源消耗殆尽,从而导致应用层的程序无资源可用,导致无法运行。 在正常情况下,客户端连接服务端需要通过三次握手,首先客户端构造一个SYN连接数据包发送至服务端,自身进入SYN_SEND状态,当服务端收到客户端的SYN包之后,为其分配内存核心内存,并将其放置在半连接队列中

TCP的三次握手和四次挥手的通俗化解释

梦想的初衷 提交于 2020-03-11 01:12:01
TCP的三次握手和四次挥手 TCP的三次握手的简单过程:1-3 0-服务器进程在创建的时候就进入listen状态,随时准备接受客户端请求(前置) 1-首先客户端向服务器发送连接请求(SYN),同时客户端主动进入syn_send(同步已发送)状态–半打开状态。 2-服务器接收到请求之后,进行自身确认请求+发出确认报文(syn+ack),这是两个动作合并成了一个,同时,服务器被动进入syn_rcvd(同步收到)状态–半打开状态。 3-客户端接收到服务器发出的确认报文之后,再一次向服务器发出确认链接报文(syn),此时客户端也进入estalished(已建立连接)状态;当服务器再次收到客户端的确认链接后进入established(已建立连接)状态,双方开始通信。 为什么是三次握手连接 假如是两次握手: 场景==》 客户端发送了第一条请求因为网络延时滞留在网络节点中 ,这时候客户端迟迟没有收到服务器的确认报文,就会认为服务器没有收到请求,就会** 重新 **进行请求,然后服务器收到后进行确认回复,这时就完成了两次握手,完成连接,传输数据,然后关闭连接。这时,滞留在网络的节点中的请求在网络通畅后到达了服务器,之后服务器还是会进行确认回复,这样就再次完成两次握手,重新建立了连接。就会导致错误和浪费。 **为什么不是四次或者更多:**tcp协议建立连接,三次就能够最大程度上达到可靠连接了

HTTP协议及请求/响应模型

拥有回忆 提交于 2020-03-10 05:57:43
1、上网的整个过程   假设我们点击了某网页上的一个链接,指向 清华大学院系设置 ,其URL是: http://www.tsinghua.edu.cn/chn/yxsz/index.html 。我们来分析一下整个过程: 浏览器分析链接指向页面的URL 浏览器向DNS请求解析www.tsinghua.edu.cn的IP地址 DNS系统解析出清华大学服务器的地址是166.111.4.100 浏览器与服务器建立TCP连接 浏览器发出取文件命令: GET /chn/yxsz/index.html 服务器www.tsinghua.edu.cn给出响应,把文件index.html返回给浏览器 释放TCP连接 浏览器解析并显示“清华大学院系设置”文件index.html中的内容 2、HTTP协议   Internet的基本协议是TCP/IP协议,目前广泛使用的FTP、HTTP协议都是基于TCP/IP的,HTTP是Web应用使用最主要的协议。   HTTP基于请求响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URI、协议版本、以及包含请求修饰符、客户端信息和内容的类似MIME的消息结果。服务器则返回一个状态行作为响应,内容包括消息协议的版本、成功或失败编码加上包含服务器信息、实体元信息以及可能的实体内容。   HTTP协议是 无状态 的

三次握手原理

淺唱寂寞╮ 提交于 2020-03-09 21:57:03
访问这张图片: http://img1.gtimg.com/13/1387/138784/13878406_1200x1000_0.jpg 通过wireshark可以看到一次完整的三次握手: 整个交互过程是: 1. 客户端发起syn 2. 服务端返回syn+ack 3. 客户端发起ack 4. 客户端发起get : http://img1.gtimg.com/13/1387/138784/13878406_1200x1000_0.jpg 5. 服务端返回照片数据流 * n 6. 客户端返回ack确认已收到. 7. 服务端返回照片数据流 * n 8. 客户端返回ack确认已收到. 9. 服务端返回照片数据流 * n 10. 服务端返回 HTTP/1.1 200 OK 表示结束 11. 服务端返回结束通知(final + ack) 12. 客户端返回ack确认已收到. 13. 客户端返回结束(final + ack) 备注: 不管是服务端还是客户端, 只要任意一方发出fin + ack之后, 就不会再去理睬另外一方了. 来源: oschina 链接: https://my.oschina.net/u/2452965/blog/513507

TCP的三次握手与四次挥手(详解+动图)

半腔热情 提交于 2020-03-09 21:53:26
TCP的概述 TCP把连接作为最基本的对象,每一条TCP连接都有两个端点,这种断点我们叫作套接字(socket),它的定义为端口号拼接到IP地址即构成了套接字,例如,若IP地址为192.3.4.16 而端口号为80,那么得到的套接字为192.3.4.16:80。 TCP报文首部 源端口和目的端口,各占2个字节,分别写入源端口和目的端口; 序号,占4个字节, TCP连接中传送的字节流中的每个字节都按顺序编号 。例如,一段报文的序号字段值是 301 ,而携带的数据共有100字段,显然下一个报文段(如果还有的话)的数据序号应该从401开始; 确认号,占4个字节,是 期望收到对方下一个报文的第一个数据字节的序号 。例如,B收到了A发送过来的报文,其序列号字段是501,而数据长度是200字节,这 表明B正确的收到了A发送的到序号700为止的数据 。因此,B期望收到A的下一个数据序号是701,于是B在发送给A的确认报文段中把确认号置为701; 数据偏移,占4位,它指出TCP报文的数据距离TCP报文段的起始处有多远; 保留,占6位,保留今后使用,但目前应都位0; 紧急URG,当URG=1,表明紧急指针字段有效。告诉系统此报文段中有紧急数据; 确认ACK,仅当ACK=1时,确认号字段才有效。TCP规定,在连接建立后所有报文的传输都必须把ACK置1; 推送PSH,当两个应用进程进行交互式通信时

TCP三次握手、四次挥手、滑动窗口、流量控制

左心房为你撑大大i 提交于 2020-03-09 18:18:27
在学习TCP协议之前,我们了解一下TCP头的报文格式 最上层是源端口号和目标端口号 接下来是包的序号和确认序号,这里的序号的作用就是维持TCP的顺序性和可靠性两种特性 接下来左边部分是当前的状态位,而大名鼎鼎的三次握手和四次挥手就是基于这个状态位实现的 右半部分是滑动窗口,主要是为了实现流量控制和拥塞控制 记住这个报文格式,接下来的内容都是基于这个的 #### 三次握手 首先我们从一个两个人打电话的例子来描述一下: A:哈喽,B。能听到么? B:你好,A。我能听到,你能听到么? A:太好了,我也能听到。我们来唠嗑么。 这个过程其实可以完美的解释三次握手的机制。我们知道,网络环境总是不安全的,只有至少经过这三次交互才能确认两方的发送和接受能力都没问题。 我们来看一下这几步分别确定了什么: 第一回合:当A将要跟B通信时,它会先发出去一个包。 第二回合:当B收到这个包的时候,就可以确定A的发送能力没问题,自己的接受能力没问题,它就会给A一个回复说:我收到了你的包了。 第三回合:A收到B的返回信息后就可以确定自己的发送和接受都没有问题,B的接受和发送能力都没有问题。但是这个时候B还不能确定自己的发送能力,所以只有当A再次发送一个包告诉B我收到你的包了才算是完成了这个握手。 三次握手除了上方的连接之外,还会牵扯到我们文章刚开始时说的包的序号和状态位,下面这个图就是一个完整的三次握手流程

网络基础知识 - HTTP协议

社会主义新天地 提交于 2020-03-09 17:40:24
这里还有一篇帖子写得很详细,可以拜读一下 https://www.cnblogs.com/ranyonsue/p/5984001.html 前传:HTTP协议的演变过程   HTTP(HyperText Transfer Protocol)协议是基于TCP的应用层协议,它不关心数据传输的细节,主要是用来规定客户端和服务端的数据传输格式,最初是用来向客户端传输HTML页面的内容。默认端口是80。 1.HTTP 0.9版本  1991年   这个版本就是最初用来向客户端传输HTML页面的,所以只有一个GET命令,然后服务器返回客户端一个HTML页面,不能是其他格式。利用这个版本完全可以构建一个简单的静态网站了。 2.HTTP 1.0版本  1996年   1.0版本是改变比较大的,奠定了现在HTTP协议的基础。这个版本的协议不仅可以传输HTML的文本页面,还可以传输其他二进制文件,例如图片、视频。而且还增加了现在常用的POST和HEAD命令。请求消息和响应消息也不是单一的了,规定了一些元数据字段。例如字符集、编码、状态响应码等。 3.HTTP 1.1版本  1997年   实际上是在1.0版本之后半年时间又发布了一个版本,这个版本在1.0版本的基础上更加完善了。这个版本增加了持久连接,就是说之前版本的协议一次请求就是一次TCP连接,请求完成后这个连接就关闭掉了

TCP与UDP的区别究竟在哪

被刻印的时光 ゝ 提交于 2020-03-09 12:14:29
TCP的优点 : 可靠,稳定 TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。 TCP的缺点 : 慢,效率低,占用系统资源高,易被攻击 TCP在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的CPU、内存等硬件资源。 而且,因为TCP有确认机制、三次握手机制,这些也导致TCP容易被人利用,实现DOS、DDOS、CC等攻击。 UDP的优点 : 快,比TCP稍安全 UDP没有TCP的握手、确认、窗口、重传、拥塞控制等机制,UDP是一个无状态的传输协议,所以它在传递数据时非常快。没有TCP的这些机制,UDP较TCP被攻击者利用的漏洞就要少一些。但UDP也是无法避免攻击的,比如:UDP Flood攻击…… UDP的缺点 : 不可靠,不稳定 因为UDP没有TCP那些可靠的机制,在数据传递时,如果网络质量不好,就会很容易丢包。 基于上面的优缺点,那么: 什么时候应该使用TCP: 当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用。 比如HTTP、HTTPS、FTP等传输文件的协议,POP

网络协议

こ雲淡風輕ζ 提交于 2020-03-09 11:01:08
网络协议介绍 OSI(Open System Interconnect)七层模型:通信的特点是对等通信 从上往下分别为 应用层:为应用程序提供服务,此层应有的网络协议有HTTPS,HTTP,FTP等协议 实际公司A的老板就是我们所述的用户,而他要发送的商业报价单,就是应用层提供的一种网络服务,当然,老板也可以选择其他服务,比如说,发一份商业合同,发一份询价单,等等。 表示层:数据格式化,数据加密;表示层提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别 由于公司A和公司B是不同国家的公司,他们之间的商定统一用英语作为交流的语言,所以此时表示层(公司的文秘),就是将应用层的传递信息转翻译成英语。同时为了防止别的公司看到,公司A的人也会对这份报价单做一些加密的处理。这就是表示的作用,将应用层的数据转换翻译等。 会话层:建立,管理,维护会话,会话层就是负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成。 会话层的同事拿到表示层的同事转换后资料,(会话层的同事类似公司的外联部),会话层的同事那里可能会掌握本公司与其他好多公司的联系方式,这里公司就是实际传递过程中的实体。他们要管理本公司与外界好多公司的联系会话。当接收到表示层的数据后,会话层将会建立并记录本次会话,他首先要找到公司B的地址信息