博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TCP,HTTP,WEBSOCKET随记
阅读量:4189 次
发布时间:2019-05-26

本文共 1841 字,大约阅读时间需要 6 分钟。

TCP ,HTTP,WEBSOCKET随记

TCP

tcp:Transmission Control Protocol ,传输控制协议,属于(OSI:open system interconnection)七层结构中的输出层。

tcp三次握手:用C表示客户端机器 S表示服务端机器。

第一次握手:C向S发送一次数据包请求,第一次数据包包含了,源端口地址,目标地址,syn等,syn: syncronizhed sequence number.此时C的请求处于 syn_send.
第二次握手: S接受到了C的请求包之后,会向C发送syn+1,以及一个确认码(ack),此时S机器请求就处于syn_recv的状态(容易受到洪水攻击)
第三次握手:C受到了S返回的syn+1,以及ack后,就会再回复S一个ack+1,当S服务器收到了ack+1.到此为止,三次握手完成,已经建立了TCP连接。

tcp的四次挥手:用C表示客户端机器 S表示服务端机器。

第一次挥手:当C客户端接受到S的数据之后,或者说应用程序处理完数据之后,应用程序通知TCP,C机器的TCP协议向S服务发送fin(finish)。
第二次握手:服务S接受到了C的fin标志之后,不会立即关闭连接,TCP会先返回一个ack给C服务器,表明我已经接受到你要关闭连接的命令,就不要再此发送fin命令,返回ack后,TCP会向S服务的应用程序通知,C服务器需要关闭连接,S应用程序答复,我这边已经处理好了,可以关闭了。
第三次握手:服务S开始向C服务发送fin标志。
第四次握手:C服务在接受到S发送的fin标志,就发送给S服务器ack+1.S服务器接受到了ack+1.服务器层就断开了连接。

基于TCP三次握手的洪水攻击

洪水攻击是利用TCP三次握手中第二次握手的时间漏洞,在第二次握手成功之后,S服务器就会处于syn_recv的状态,如果有一台伪装机,进行恶意攻击,利用伪ip地址发送请求之后,等到S服务发送了syn+1,以及ack之后一直不给以答复,这样就导致S服务器一直处于半连接的状态。如果伪装机不断发送请求,将导致S服务器的半连接数量越来越多,最后导致存储半连接的队列堆满,从而导致正常的连接连不上S服务器,类以S服务器处于宕机的状态。

怎样预防TCP的洪水攻击了

目前针对洪水攻击的方法有两个,第一,就是缩短半连接的等待时间,第二,就是在linun系统下运用syn cookie firewall.

HTTP

http: Hyper Text Transfer Protocol(超文本传输协议) HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等). 其次HTTP还有一个特点,就是其属于半双工协议。具体http协议包含了什么内容,我这就不多作介绍,连接。

单工,半双工,全双工: 单工,数据单向传输,这条马路永远是单行道, 半双工,数据传输是双向的,例如,一座桥,某一刻只能A—B,另一刻下午B—>A。全双工,就是数据可以双向传输,在同一时刻,数据是可以双向输出的。也就在同一条马路是双向的。可以同一个时刻过车。

http应用程序之间的通信:一般A服务器上的浏览器(也是一个应用程序)向B服务端(应用程序)发送了http请求会经过那些处理到达了B服务端了。

第一步:A服务器发送了请求,首先A服务器上的http协议对浏览器中页面信息进行打包成数据报文。并把保文传输到了TCP(传输协议层)
第二步:TCP层协议,将HTTP协议层传输过来的数据报文进行切割处理,然后进行编码,加密处理。
第三步:IP协议层(网络层),就是寻址,这一层主要有一些路由器组成。
第四步:再经过链路层和物理层将数据传输到B服务器。然后B服务其TCP/IP层协议进行DNS的解析以及数据包的拼接,解码,解密等一序列的操作。
第五步:B服务端的http协议,拿到数据报文,进行相应的处理。最后将处理结果按照之前的协议流程发送到A服务器。

websocket协议

websocket: WebSocket协议是双向通信协议,在建立连接之后,客户端和服务器都可以主动向对方发送或接受数据。WebSocket协议建立的前提需要借助HTTP协议,建立连接之后,持久连接的双向通信就与HTTP协议无关了。

websocket的运用,例如,当你在新增一条代办记录,你可以在前端页面的右上角有个小图标进行提示。

转载地址:http://rusoi.baihongyu.com/

你可能感兴趣的文章
kermit的安装和配置
查看>>
linux中cat命令使用详解
查看>>
java中的异常机制
查看>>
商务智能-基本方法-数据钻取
查看>>
openstack-instance-high-availability-Evacuate
查看>>
evacuate-instance-automatically
查看>>
pycharm常用设置(keymap设置及eclipse常用快捷键总结)
查看>>
关于在openstack的环境变量.bashrc自定自己简化命令
查看>>
Openstack Heat Project介绍(转)
查看>>
How to Perform an Upgrade from Icehouse to Juno(ice升级到juno)
查看>>
高扩展性网站的50条原则(转)-思维导图
查看>>
解决openstack novnc一段时间后自动挂断登录不上问题,novncproxy dead but pid file exists
查看>>
构建OpenStack的云基础架构:ManageIQ(转)
查看>>
云管理软件 ManageIQ(转)
查看>>
CentOS 7.0,启用iptables防火墙(转)
查看>>
DISCUZ浅析之COOKIE篇
查看>>
实战DDD(Domain-Driven Design领域驱动设计:Evans DDD)
查看>>
SSH中各个框架的作用以及Spring AOP,IOC,DI详解
查看>>
openstack juno 配置vmware(vcenter、vsphere)
查看>>
远程debug调试(eclipse)之openstack windows
查看>>