三次握手

计算机网络

筅森魡賤 提交于 2020-02-13 11:18:12
1.http和tcp的区别 http是建立在tcp之上的应用层协议,而tcp是传输层建立的协议 HTTP/1.* 一次请求-响应,建立一个连接,用完关闭; HTTP/1.1 串行化单线程处理,可以同时在同一个tcp链接上发送多个请求,但是只有响应是有顺序的,只有上一个请求完成后,下一个才能响应。一旦有任务处理超时等,后续任务只能被阻塞(线头阻塞); HTTP/2 并行执行。某任务耗时严重,不会影响到任务正常执行 先通过tcp三次握手建立连接,然后通过http传输数据 http是对数据的规范 2.websocket和http的区别 websocket是http的升级,实现了真正的长连接,全双工通信 Websocket是html5提出的一个协议规范,是为解决客户端与服务端实时通信。本质上是一个基于tcp,先通过HTTP/HTTPS协议发起一条特殊的http请求进行握手后创建一个用于交换数据的TCP连接。 WebSocket优势: 浏览器和服务器只需要要做一个握手的动作,在建立连接之后,双方可以在任意时刻,相互推送信息。同时,服务器与客户端之间交换的头信息很小。 来源: CSDN 作者: 千雨猫 链接: https://blog.csdn.net/qq_33598343/article/details/104262564

(纯干货)HTTP/1.0/1.1/2.0的区别以及http和https的区别

≯℡__Kan透↙ 提交于 2020-02-12 21:11:00
https://segmentfault.com/a/1190000015316332 深入理解http1.x、http 2和https 一、HTTP/1.x Http1.x 缺陷 :线程阻塞,在同一时间,同一域名的请求有一定数量限制,超过限制数目的请求会被阻塞 http1.0 缺陷 :浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接(T CP连接的新建成本很高,因为需要客户端和服务器三次握手 ),服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求; 解决方案 : 添加头信息——非标准的Connection字段 Connection: keep-alive http1.1: 改进点: 持久连接 引入了持久连接,即TCP连接默认不关闭,可以被多个请求复用,不用声明 Connection: keep-alive (对于同一个域名,大多数浏览器允许同时建立6个持久连接) 管道机制 即在同一个TCP连接里面,客户端可以同时发送多个请求。 分块传输编码 即服务端没产生一块数据,就发送一块,采用”流模式”而取代”缓存模式”。 新增请求方式 PUT:请求服务器存储一个资源; DELETE:请求服务器删除标识的资源; OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和需求; TRACE:请求服务器回送收到的请求信息

第七周作业

爱⌒轻易说出口 提交于 2020-02-12 20:57:48
1、简述osi七层模型和TCP/IP五层模型 OSI七层模型和TCP/IP模型两者对应关系图: OSI七层模型: 物理层: 二进制传输。为启动、维护以及关闭物理链路d'yi定义了电气规范、机械规范、过程规范和功能规范。 数据链路层: 介质访问。定义如何格式化数据以便进行传输以及如何控制对网络的访问;支持错误检测。 网络层: 数据传输。路由数据包;选择传递数据的最佳路径;支持逻辑寻址和路径选择。 传输层: 传输问题。确保数据传输的可靠性;建立、维护和终止虚拟电路;通过错误检测和恢复;信息流控制来保障可靠性。 会话层: 主机间通信。建立、管理和终止在应用程序之间的会话。 表示层: 数据表示。确保接收系统可以读出该数据;格式化数据;构建数据;协商用于应用层的数据传输语法;提供加密。 应用层: 网络进程访问应用层。为应用程序进程(例如,电子邮件、文件传输和终端仿真)提供网络服务;提供用户身份验证。 TCP/IP四层模型: 应用层: 应用层对应于OSI参考模型的高层,为用户提供所需要的各种服务,例如:FTP、Telnet、DNS、SMTP等。 传输层: 传输层对应于OSI参考模型的传输层,为应用层实体提供端到端的通信功能,保证了数据包的顺序传送及数据的完整性。该层定义了两个主要的协议:传输控制协议(TCP)和用户数据报协议(UDP)。 TCP协议提供的是一种可靠的、通过“三次握手

网络基础(二)及HTTP协议

China☆狼群 提交于 2020-02-12 19:45:45
网络基础(二)及HTTP协议 一、HTTP协议 1 . 什么是url? 平时我们俗称的 “网址” 其实就是说的 URL 2.http协议的格式 http请求: 首行: [方法] + [url] + [版本] Header: 请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束 空行 Body: 空行后面的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有一个Content-Length属性来标识Body的长度; http响应: 首行: [版本号] + [状态码] + [状态码解释] Header: 请求的属性,冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束 空行 Body: 空行后面的内容都是Body.Body允许为空字符串. 如果Body存在, 则在Header中会有一个 Content-Length属性来标识Body的长度;如果服务器返回了一个html页面, 那么html页面内容就是在 body中. http常见的Header: Content-Type: 数据类型(text/html等) Content-Length: Body的长度 Host:客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上; User-Agent: 声明用户的操作系统和浏览器版本信息;

TCP的三次握手与四次挥手理解及面试题

牧云@^-^@ 提交于 2020-02-11 21:39:38
ACK、SYN和FIN这些大写的单词表示标志位,其值要么是1,要么是0;ack、seq小写的单词表示序号(是数字)。 标志位: 确认ACK:占1位;ACK=1时,确认号字段数字有效;ACK=0时,确认号字段数字无效。 同步SYN:建立连接时用于同步序号。当SYN=1 ACK=0时表示:这是一个连接请求报文。若同意连接,则在响应报文段中使得SYN=1 ACK=1。因此,SYN=1表示这是一个连接请求报文,或连接接受报文。SYN这个标志位只有在TCP建立连接时才会被置1,握手完成后SYN被置零。 终止FIN:用来释放一个连接。FIN=1表示此报文段发送方的数据已经发送完毕,并要求释放运输连接。 两种序列号: 序列号seq:占4个字节,用来标记数据段的顺序(是标记同一个报文里不同数据字节的顺序,不同报文之间的顺序还没弄明白),TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生(意思是每个报文的第一个数据字节的编号都是重新随机生成的);给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号。 确认号ack:占4个字节,期待收到对方下一个报文段的第一个数据字节的序号;序列号表示报文段携带数据的第一个字节的编号;而确认号指的是期望接收到下一个字节的编号;因此当前报文段最后一个字节的编号+1即为确认号。 x和y

Socket

泪湿孤枕 提交于 2020-02-10 05:37:50
学socket编程的意义   客户端/服务器架构(c/s架构) 硬件c/s架构(打印机) 软件c/s架构         互联网中处处是C/S架构     如某网站是服务端,你的浏览器是客户端(B/S架构也是C/S架构的一种)     腾讯作为服务端为你提供视频,你得下个腾讯视频客户端才能看它的视频   C/S架构与socket的关系:      socket就是为了更加便捷的完成C/S架构的开发 OSI七层    一个完整的计算机系统是由硬件、操作系统、应用软件三者组成,具备了这三个条件,一台计算机系统就可以自己跟自己玩了(打个单机游戏,玩个扫雷啥的)    如果你要跟别人一起玩,那你就需要上网了,什么是互联网?   互联网的核心就是由一堆协议组成,协议就是标准,比如全世界人通信的标准是英语。    人们按照分工不同把互联网协议从逻辑上划分了层级:     互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层:          每层常用的物理设备:         为何学习socket一定要先学习互联网协议:         1.首先:本节课程的目标就是教会你如何基于socket编程,来开发一款自己的C/S架构软件   2.其次:C/S架构的软件(软件属于应用层)是基于网络进行通信的   3.然后:网络的核心即一堆协议,协议即标准

面试题总结(一)、TCP协议

一笑奈何 提交于 2020-02-10 03:57:21
声明:本文主要探讨当TCP协议出现在面试笔试场合可能会涉及的问题,每一个知识点讨论力求简洁,便于记忆,但讨论深度有限,如要深入研究可点击参考链接,希望对正在找工作的同学有点帮助。 一、TCP协议简介 一般问到TCP协议的时候 最常见的是TCP连接建立和断开的过程,也就是三次握手和四次挥手,两张图足矣。 1.1 三次握手 1.2 四次挥手 二、常见面试题 2.1 TCP连接阶段 2.1.1 发送序号和确认序号问题 例: TCP建立连接的过程采用三次握手,已知第三次握手报文的发送序列号为1000,确认序列号为2000,请问第二次握手报文的发送序列号和确认序列号分别为? 答:看答案时请参考上面TCP连接建立的图。 客户端:发送X 服务端:发送Y, 确认X+1 客户端:发送X+1(1000),确认Y+1(2000) 可以反推第二次为1999,确认1000 2.1.2 SYN Flood 攻击原理及防御 SYN Flood是当前最流行的DoS(拒绝服务攻击)与DDoS(分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式。 原理: 问题出在TCP连接的三次握手中,恶意的攻击者大量发送SYN报文,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源----数以万计的半连接

分布式系统面试清单

断了今生、忘了曾经 提交于 2020-02-10 00:13:20
操作系统系统(基本知识) GFS(high avaialbe, scalable, data replication, erasure code) ext4 (disk layout, io scheduler, performance tunning) 了解 btrfs(the last file sytem, which is now being developed. You take some knowledge about the disk layout, snapshot, data integrity. You can search btrfs wiki on google ) 了解 os kernel(page cache) 了解 进程(通信机制包括消息队列,共享内存, pipeline等,进程线程区别) 存储(基本知识、设计) 内存 k-v(redis) (memory data structure, hash algorithm, distributed data partition alogrithm, data avaiable) 分布式数据库(Hbase) (CAP, BASE, multi-version concurrent control, WAL, LSM tree) MySQL (InnoDB log, InnoDB data structure)

图解TCPIP---第六章---传输层TCPUDP

寵の児 提交于 2020-02-09 23:42:26
哈哈哈哈哈哈哈哈 TCPIP识别一个进行通信的应用需要5大要素 源IP地址 目标IP地址 源端口 目标端口 协议号 0-1023 知名端口号 1024-49151 这些端口被正式注册了 但是可以用于任何通信 49152-65535 操作系统动态分配的端口号 一些知名端口号如下 20 ftp-data File Transfer [Deafult Data] 21 ftp File Transfer [Control] 22 ssh 23 talent 25 smtp Simple Mail Transfer Protocol 43 nicname Who Is 53 domain Domain Name Server 80 http 101 hostname NIC Host Name Server 443 https UDP 常被用于以下几个方面 包总量比较少的通信 DNS SNMP等 视频 音频等多媒体通信 限定于LAN等特定网络中的应用通信 广播通信(广播 多播) TCP 确认应答 序列号 TCP通过检验和 序列号 确认应答 重发控制 连接管理 窗口控制 等 机制实现可靠传输 确认应答ACK acknowledgement 否定确认应答 NACK negative acknowledgement Q1 发送端发送数据后会等待对端的确认应答 一定时间未等到确认应答

TCP协议的三次握手与四次挥手

蹲街弑〆低调 提交于 2020-02-09 03:36:02
TCP,提供面向连接的服务,在传送数据之前必须先建立连接,数据传送完成后要释放连接。 TCP的6种标志符 SYN(synchronous),建立联机 ACK(acknowledgement),确认 PSH(push),传输 FIN(finish),结束 RST(reset),重置 URG(urgent),紧急 我们用Wireshark抓到了建立、释放TCP连接时的数据包,我们根据抓到的数据包来分析TCP协议的三次握手和四次挥手。 (1)三次握手 1.第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 客户端给服务端发送ACK确认报文: seq = 0 2.第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; 服务器收到客户端的ACK报文,返回:ack = 0+1(客户端发送的seq+1) seq=0 3.第三次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK 包,此时服务器进入SYN_RECV状态; 客户端再次确认:ack = 0+1=1(服务器返回的seq+1)seq = 1(服务端返回的ack)。 TCP三次握手的时空图: (2