三次握手

webSocket协议与Socket的区别

人盡茶涼 提交于 2020-01-15 07:39:30
WebSocket介绍与原理 WebSocket protocol 是HTML5一种新的协议。它实现了浏览器与服务器全双工通信(full-duplex)。一开始的握手需要借助HTTP请求完成。 ——百度百科 目的:即时通讯,替代轮询 网站上的即时通讯是很常见的,比如网页的QQ,聊天系统等。按照以往的技术能力通常是采用轮询、Comet技术解决。 HTTP协议是非持久化的,单向的网络协议,在建立连接后只允许浏览器向服务器发出请求后,服务器才能返回相应的数据。当需要即时通讯时,通过轮询在特定的时间间隔(如1秒),由浏览器向服务器发送Request请求,然后将最新的数据返回给浏览器。这样的方法最明显的缺点就是需要不断的发送请求,而且通常HTTP request的Header是非常长的,为了传输一个很小的数据 需要付出巨大的代价,是很不合算的,占用了很多的宽带。 缺点:会导致过多不必要的请求,浪费流量和服务器资源,每一次请求、应答,都浪费了一定流量在相同的头部信息上 然而WebSocket的出现可以弥补这一缺点。在WebSocket中,只需要服务器和浏览器通过HTTP协议进行一个握手的动作,然后单独建立一条TCP的通信通道进行数据的传送。 原理 WebSocket同HTTP一样也是应用层的协议,但是它是一种双向通信协议,是建立在TCP之上的。 连接过程 —— 握手过程 1. 浏览器

TCP三次握手和syn攻击

我的梦境 提交于 2020-01-15 07:37:39
TCP握手协议 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接. 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; SYN:同步序列编号(Synchronize Sequence Numbers) 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手. 完成三次握手,客户端与服务器开始传送数据 A与B建立TCP连接时:首先A向B发SYN(同步请求),然后B回复SYN搜索+ACK(同步请求应答),最后A回复ACK确认,这样TCP的一次连接(三次握手)的过程就建立了! 一、TCP报文格式 TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是TCP报文格式图: 图1 TCP报文格式 上图中有几个字段需要重点介绍下: (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。 (2)确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效

TCP三次握手四次挥手

旧巷老猫 提交于 2020-01-15 06:34:04
TCP三次握手四次挥手 标志位缩写 全称 中文 SYN synchronous 建立联机 ACK acknowledgement 确认 PSH push 传送 FIN finish 结束 RST reset 重置 URG urgent 紧急 Seq Sequence number 顺序号码 ACK Acknowledge number 确认号码 状态名称 意义 LISTEN 侦听来自远方TCP端口的连接请求 SYN-SENT 在发送连接请求后等待匹配的连接请求 SYN-RECEIVED 在收到和发送一个连接请求后等待对连接请求的确认 ESTABLISHED 代表一个打开的连接,数据可以传送给用户 FIN-WAIT-1 等待远程TCP的连接中断请求,或先前的连接中断请求的确认 FIN-WAIT-2 从远程TCP等待连接中断请求 CLOSE-WAIT 等待从本地用户发来的连接中断请求 CLOSING 等待远程TCP对连接中断的确认 LAST-ACK 等待原来发向远程TCP的连接中断请求的确认 TIME-WAIT 等待足够的时间以确保远程TCP接收到连接中断请求的确认 CLOSED 没有任何连接状态 【注意】 在TIME_WAIT状态中,如果TCP client端最后一次发送的ACK丢失了,它将重新发送。TIME_WAIT状态中所需要的时间是依赖于实现方法的。典型的值为30秒

TCP的三次握手四次挥手

天涯浪子 提交于 2020-01-15 04:26:12
一、三次握手 1.wireshark 抓包 2.TCP报文手部 注意标志位: 1).同步 SYN = 1 表示这是一个连接请求或连接接受报文。 2).只有当 ACK = 1 时确认号字段才有效。当 ACK = 0 时,确认号无效。 3).FIN = 1 表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。 3.连接示意 二、四次挥手 1.知所以然 为什么建立连接协议是三次握手,而关闭连接却是四次握手呢? 这是因为服务端的LISTEN状态下的SOCKET当收到SYN报文的建连请求后,它可以把ACK和SYN(ACK起应答作用,而SYN起同步作用) 放在一个报文里来发送。但关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部 发送给对方了,所以你可以未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意 现在可以关闭连接了,所以它这里的ACK报文和FIN报文多数情况下都是分开发送的。   更明了的回答: 由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。 这个原则是当一方完成它的数据发送任务后就能发送一 个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行 关闭的一方将执行主动关闭

TCP的三次握手与四次挥手理解及面试题(很全面)

流过昼夜 提交于 2020-01-14 23:33:02
本文经过借鉴书籍资料、他人博客总结出的知识点,欢迎提问 序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号。 确认号ack:占4个字节,期待收到对方下一个报文段的第一个数据字节的序号;序列号表示报文段携带数据的第一个字节的编号;而确认号指的是期望接收到下一个字节的编号;因此当前报文段最后一个字节的编号+1即为确认号。 确认ACK:占1位,仅当ACK=1时,确认号字段才有效。ACK=0时,确认号无效 同步SYN:连接建立时用于同步序号。当SYN=1,ACK=0时表示:这是一个连接请求报文段。若同意连接,则在响应报文段中使得SYN=1,ACK=1。因此,SYN=1表示这是一个连接请求,或连接接受报文。SYN这个标志位只有在TCP建产连接时才会被置1,握手完成后SYN标志位被置0。 终止FIN:用来释放一个连接。FIN=1表示:此报文段的发送方的数据已经发送完毕,并要求释放运输连接 PS:ACK、SYN和FIN这些大写的单词表示标志位,其值要么是1,要么是0;ack、seq小写的单词表示序号。 字段 含义 URG 紧急指针是否有效。为1,表示某一位需要被优先处理 ACK 确认号是否有效,一般置为1。 PSH

http 三次握手

為{幸葍}努か 提交于 2020-01-14 19:32:40
1、TCP连接 客户端和服务器之后只有建立了TCP连接,http 请求和响应的 数据包才能在这个连接的基础上发送。在http2.0之前,一个http 请求对应一个tcp连接。而且,http 2的版本,http请求是可以并发的。 2、三次握手的过程 客户端先发起一个我要创建一个TCP连接的数据包的请求,有两个标志位,SYN = 1, Seq = X 服务端接收到之后,知道要创建一个连接,创建一个TCP的socket端口,返回三个标志位,SYN = 1, ACK = X + 1,Seq = Y 客户端接到这个数据包之后,就知道,服务端已经允许建立连接了,ACK = Y + 1,Seq = Z 3、为什么需要三次握手 可以防止服务端建立一些无用的连接。客户端发送请求后,如果服务端直接建立连接,返回数据,但是数据丢失,客户端超时会重新发起请求建立连接,但是重新创建后,服务端感知不到,就会耗费资源 来源: https://www.cnblogs.com/jiumengmeng/p/12193515.html

scoket

♀尐吖头ヾ 提交于 2020-01-14 11:59:43
Socket网络编程 什么是Socket   Socket就是为网络服务提供的一种机制。   通讯的两端都有 Sokcet   网络通讯其实就是 Sokcet间的通讯   数据在两个 Sokcet间通过IO传输。 TCP/IP   要想理解socket首先得熟悉一下TCP/IP协议族, TCP/IP( Transmission Control Protocol/Internet Protocol)即传输控制协议 /网间协议,定义了主机如何连入因特网及数据如何再它们之间传输的标准,   从字面意思来看TCP/IP是TCP和IP协议的合称,但实际上TCP/IP协议是指因特网整个TCP/IP协议族。不同于ISO模型的七个分层,TCP/IP协议参考模型把所有的TCP/IP系列协议归类到四个抽象层中   应用层:TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等   传输层:TCP,UDP   网络层:IP,ICMP,OSPF,EIGRP,IGMP   数据链路层:SLIP,CSLIP,PPP,MTU   每一抽象层建立在低一层提供的服务上,并且为高一层提供服务,看起来大概是这样子的 IP地址与域名     在现实生活中,如果要打电话则需要知道对应人的电话号码,如果要寄信则需要知道收信人的地址。在网络中也是这样,需要知道一个设备的位置,则需要使用该设备的 IP地址

Android TCP/IP常见问题

柔情痞子 提交于 2020-01-14 04:25:09
1 TCP的6种标识 SYN:SYNchronous,建立联机 ACK:ACKnowledgement,确认 PSH:PuSH,传送 FIN:FINish,结束 RST:ReSeT,重置 URG:URGent,紧急 SEQ:SEQuence number,顺序号码 2 TCP 3次握手 2.1 Wireshark抓包分析 Wireshark抓包时,3次握手显示的是相对序列号/确认号。如果想要关闭相对序列号/确认号,可以选择Wireshark菜单栏中的 Edit -> Preferences ->protocols ->TCP,去掉Relative sequence number后面勾选框中的√即可。 原始的Seq和ACK的值都很大,为便于理解,使用相对值;有点类似于真值表。 Seq, ACK 0, 0 0, 1 1, 1 3次握手Wireshark过滤规则:tcp.flags.syn==1 or tcp.flags.ack==0 2.2 Linux内核3次握手和接受数据状态机 RFC 793 net/ipv4/tcp_input.c 服务端 - tcp_rcv_state_process() 客户端 - tcp_rcv_synsent_state_process() TCP server端完成最终的3次握手 - 一直处于TCP_LISTEN状态监听连接 in net/ipv4

字节面试

99封情书 提交于 2020-01-14 01:07:43
自我介绍 所学专业课程(不该说 毫无准备的密码学,以为面试官不懂) C++/C: 说一下向量(vector) 关键字 static、 const 、extern static 如果声明在函数中,在哪?生存周期? 密码学: 对称密码体制与非对称密码体制? 计网: OSI模型 TCP位于哪层? TCP与UDP区别 哪里用TCP,哪里用UDP? TCP三次握手 HTTP与HTTPS区别 DNS原理? 数据结构: 线性表与链表区别 怎样判断链表是否有环 一道数学题: 3个商家3个订单1个外卖员,多少种派送方式?(漏了先拿两单,送一单,再取最后一单这种情况) 一道编程题: 二叉树最长路径 来源: CSDN 作者: dawn_LL 链接: https://blog.csdn.net/qq_41765862/article/details/103964111

nmap命令-----高级用法

两盒软妹~` 提交于 2020-01-13 06:12:06
探测主机存活常用方式 (1)-sP :进行ping扫描 打印出对ping扫描做出响应的主机,不做进一步测试(如端口扫描或者操作系统探测): 下面去扫描10.0.3.0/24这个网段的的主机 nmap -sP 10.0.3.0/24 这个命令可以用于探测局域网有哪些机器 [root@B ~]# nmap -sP 10.0.3.0/24 Starting Nmap 5.51 ( http://nmap.org ) at 2016-12-29 11:24 CST Nmap scan report for 10.0.3.1 Host is up (0.0079s latency). Nmap scan report for 10.0.3.2 Host is up (0.0046s latency). Nmap scan report for 10.0.3.3 Host is up (0.0037s latency). Nmap done: 256 IP addresses (3 hosts up) scanned in 10.01 seconds [root@B ~]# (2) -sn: -sn: Ping Scan - disable port scan #ping探测扫描主机, 不进行端口扫描 ( 测试过对方主机把icmp包都丢弃掉,依然能检测到对方开机状态 ) [root@B ~]#