
计算机网络
消灭BUG鸭
交流分享,共同进步
展开
-
建立TCP服务器的各个系统具体的调用过程
- 服务器:1、创建socket -> int socket(int domain, int type, int protocol);domain:协议域,决定了socket的地址类型,IPv4为AF_INET。type:指定socket类型,SOCK_STREAM为TCP连接。protocol:指定协议。IPPROTO_TCP表示TCP协议,为0时自动选择type默认协议。2、绑定socket和端口号 -> int bind(int sockfd, const struct s.原创 2021-07-13 23:15:58 · 364 阅读 · 2 评论 -
网络层常见协议
网络层常见协议原创 2021-07-13 22:55:05 · 94 阅读 · 0 评论 -
HTTPS的定义以及加密方式
1、HTTPS 的定义HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer)通信,再由 SSL 和 TCP 通信,也就是说 HTTPS 使用了隧道进行通信。通过使用 SSL,HTTPS 具有了加密(防窃听)、认证(防伪装)和完整性保护(防篡改)。2、HTTPS 的加密方式HTTPS 采用混合的加密机制,使用非对称密钥加密用于传输对称密钥来保证传输过程的安全性,之后使用对称密钥加密进行通信来保证通信过程的效率。...原创 2021-07-13 22:53:35 · 304 阅读 · 0 评论 -
Cookie 与 Session的对比
HTTP作为无状态协议,必然需要在某种方式保持连接状态。这里简要介绍一下Cookie和Session。1、CookieCookie是客户端保持状态的方法。Cookie简单的理解就是存储由服务器发至客户端并由客户端保存的一段字符串。为了保持会话,服务器可以在响应客户端请求时将Cookie字符串放在Set-Cookie下,客户机收到Cookie之后保存这段字符串,之后再请求时候带上Cookie就可以被识别。除了上面提到的这些,Cookie在客户端的保存形式可以有两种,一种是会话Cookie一种是持久Coo原创 2021-07-13 22:48:47 · 96 阅读 · 0 评论 -
Session的内容总结
1、Session的工作原理session 的工作原理是客户端登录完成之后,服务器会创建对应的 session,session 创建完之后,会把session 的 id 发送给客户端,客户端再存储到浏览器中。这样客户端每次访问服务器时,都会带着sessionid,服务器拿到 sessionid之后,在内存找到与之对应的 session 这样就可以正常工作了。除了可以将用户信息通过 Cookie 存储在用户浏览器中,也可以利用 Session 存储在服务器端,存储在服务器端的信息更加安全。Sessi原创 2021-07-13 22:46:00 · 1265 阅读 · 0 评论 -
Cookie的相关内容总结
1、Cookie的定义HTTP 协议是无状态的,主要是为了让 HTTP 协议尽可能简单,使得它能够处理大量事务,HTTP/1.1 引入 Cookie 来保存状态信息。Cookie 是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器之后向同一服务器再次发起请求时被携带上,用于告知服务端两个请求是否来自同一浏览器。由于之后每次请求都会需要携带Cookie 数据,因此会带来额外的性能开销(尤其是在移动环境下)。Cookie 曾一度用于客户端数据的存储,因为当时并没有其它合适的存储办法而作为唯原创 2021-07-13 22:42:18 · 536 阅读 · 0 评论 -
对称密钥加密和非对称密钥加密
1、对称密钥加密(Symmetric-Key Encryption),加密和解密使用同一密钥。优点:运算速度快缺点:无法安全地将密钥传输给通信方2、非对称密钥加密,又称公开密钥加密(Public-Key Encryption),加密和解密使用不同的密钥。公开密钥所有人都可以获得,通信发送方获得接收方的公开密钥之后,就可以使用公开密钥进行加密,接收方收到通信内容后使用私有密钥解密。非对称密钥除了用来加密,还可以用来进行签名。因为私有密钥无法被其他人获取,因此通信发送方使用其私有密钥进行签名,通信原创 2021-07-13 22:34:20 · 5090 阅读 · 0 评论 -
三次握手四次挥手的变迁图
其中,粗的实线箭头表示正常的客户端状态变迁;粗的虚线箭头表示正常的服务器状态变迁。原创 2021-07-13 20:20:55 · 94 阅读 · 0 评论 -
终止一个TCP连接要经过四次挥手内容
1、建立一个连接需要三次握手,而终止一个连接要经过四次挥手。2、原因:这由TCP的半关闭(half-close)造成的。所谓的半关闭,其实就是TCP提供了连接的一端在结束它的发送后还能接收来自另一端数据的能力。TCP 的连接的拆除需要发送四个包,因此称为四次挥手(Four-way handshake),客户端或服务器均可主动发起挥手动作。3、具体内容:■ 初始状态:客户端和服务端都在连接状态,接下来开始进行四次分手断开连接操作。■ 第一次挥手:第一次分手无论是客户端还是服务端都可以发起,因为原创 2021-07-06 20:00:28 · 1684 阅读 · 1 评论 -
SYN攻击相关内容
服务器端的资源分配是在二次握手时分配的,而客户端的资源是在完成三次握手时分配的,所以服务器容易受到SYN洪泛攻击。SYN攻击就是Client在短时间内伪造大量不存在的IP地址,并向Server不断地发送SYN包,Server则回复确认包,并等待Client确认,由于源地址不存在,因此Server需要不断重发直至超时,这些伪造的SYN包将长时间占用未连接队列,导致正常的SYN请求因为队列满而被丢弃,从而引起网络拥塞甚至系统瘫痪。SYN 攻击是一种典型的 DoS/DDoS 攻击。检测 SYN 攻击非常的方便,原创 2021-07-06 19:53:12 · 192 阅读 · 0 评论 -
TCP连接时三次握手与是否携带数据
1、三次握手(Three-way Handshake)其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。进行三次握手的主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后面的可靠性传送做准备。实质上其实就是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号,交换TCP窗口大小信息。■ 初始状态:客户端处于 closed(关闭)状态,服务器处于 listen(监听) 状态。■第一次握手:客户端发送请求报文将 SYN = 1同步序列号和初始化原创 2021-07-06 19:41:34 · 5224 阅读 · 4 评论 -
应用层常见协议
原创 2021-07-06 19:24:10 · 162 阅读 · 0 评论 -
常见TCP的连接状态【笔记】
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层 通信协议。■CLOSED:初始状态。■LISTEN:服务器处于监听状态。■SYN_SEND:客户端socket执行CONNECT连接,发送SYN包,进入此状态。■SYN_RECV:服务端收到SYN包并发送服务端SYN包,进入此状态。■ESTABLISH:表示连接建立。客户端发送了最后一个ACK包后进入此状态,服务端接收到ACK包后进入此状态。■FIN_WAIT_1:.原创 2021-07-06 19:22:51 · 412 阅读 · 0 评论 -
TCP头部中的信息总结
■序号(32bit):传输方向上字节流的字节编号。初始时序号会被设置一个随机的初始值(ISN),之后每次发送数据时,序号值 = ISN + 数据在整个字节流中的偏移。假设A -> B且ISN = 1024,第一段数据512字节已经到B,则第二段数据发送时序号为1024 + 512。用于解决网络包乱序问题。■确认号(32bit):接收方对发送方TCP报文段的响应,其值是收到的序号值 + 1。■首部长(4bit):标识首部有多少个4字节 * 首部长,最大为15,即60字节。■标志位(6bit):原创 2021-07-01 22:07:25 · 191 阅读 · 1 评论 -
HTTP 的POST 方法比 GET 方法安全性比较
POST的数据在地址栏上不可见,看上去,比 GET 安全。但从传输的角度来说,POST与GET 都是不安全的,因为 HTTP 在网络上是明文传输的,只要在网络节点上捉包,就能完整地获取数据报文。要想安全传输,就只有加密,也就是 HTTPS。...原创 2021-07-01 22:02:43 · 1843 阅读 · 0 评论 -
HTTP中缓存的私有和共有字段笔记
private 指令规定了将资源作为私有缓存,只能被单独用户使用,一般存储在用户浏览器中。Cache-Control: privatepublic 指令规定了将资源作为公共缓存,可以被多个用户使用,一般存储在代理服务器中。Cache-Control: public...原创 2021-07-01 21:49:14 · 337 阅读 · 0 评论 -
DNS查询方式【笔记】
1、递归解析当局部DNS服务器自己不能回答客户机的DNS查询时,它就需要向其他DNS服务器进行查询。此时有两种方式。局部DNS服务器自己负责向其他DNS服务器进行查询,一般是先向该域名的根域服务器查询,再由根域名服务器一级级向下查询。 最后得到的查询结果返回给局部DNS服务器,再由局部DNS服务器返回给客户端。2、迭代解析当局部DNS服务器自己不能回答客户机的DNS查询时,也可以通过迭代查询的方式进行解析。局部DNS服务器不是自己向其他DNS服务器进行查询,而是把能解析该域名的其他DNS服务器的IP地原创 2021-06-28 23:09:07 · 1745 阅读 · 0 评论 -
端口有效范围笔记
0-1023为知名端口号,比如其中HTTP是80,FTP是20(数据端口)、21(控制端口)。UDP和TCP报头使用两个字节存放端口号,所以:端口号的有效范围是从0到65535动态端口的范围是从1024到65535原创 2021-06-28 23:03:37 · 357 阅读 · 0 评论 -
RARP的定义及工作原理
1、定义:概括: 反向地址转换协议,网络层协议,RARP与ARP工作方式相反。 RARP使只知道自己硬件地址的主机能够知道其IP地址。RARP发出要反向解释的物理地址并希望返回其IP地址,应答包括能够提供所需信息的RARP服务器发出的IP地址。2、原理:(1)网络上的每台设备都会有一个独一无二的硬件地址,通常是由设备厂商分配的MAC地址。主机从网卡上读取MAC地址,然后在网络上发送一个RARP请求的广播数据包,请求RARP服务器回复该主机的IP地址。(2)RARP服务器收到了RARP请求数据包,为其原创 2021-06-28 23:01:32 · 13089 阅读 · 0 评论 -
HTTPS是如何保证数据传输的安全,整体的流程是什么?(SSL是怎么工作保证安全的)
(1)客户端向服务器端发起SSL连接请求;(2) 服务器把公钥发送给客户端,并且服务器端保存着唯一的私钥;(3)客户端用公钥对双方通信的对称秘钥进行加密,并发送给服务器端;(4)服务器利用自己唯一的私钥对客户端发来的对称秘钥进行解密;(5)进行数据传输,服务器和客户端双方用公有的相同的对称秘钥对数据进行加密解密,可以保证在数据收发过程中的安全,即是第三方获得数据包,也无法对其进行加密,解密和篡改。因为数字签名、摘要是证书防伪非常关键的武器。 “摘要”就是对传输的内容,通过hash算法计算出一段固定原创 2021-06-25 11:01:56 · 583 阅读 · 0 评论 -
SSL/TLS的定义
1、SSL代表安全套接字层。它是一种用于加密和验证应用程序(如浏览器)和Web服务器之间发送的数据的协议。 身份验证 , 加密Https的加密机制是一种共享密钥加密和公开密钥加密并用的混合加密机制。2、SSL/TLS协议作用:认证用户和服务,加密数据,维护数据的完整性的应用层协议加密和解密需要两个不同的密钥,故被称为非对称加密;加密和解密都使用同一个密钥的3、对称加密:优点在于加密、解密效率通常比较高 ,HTTPS 是基于非对称加密的, 公钥是公开的,...原创 2021-06-24 21:42:10 · 358 阅读 · 0 评论 -
DNS的具体解析过程
■请求一旦发起,若是chrome浏览器,先在浏览器找之前有没有缓存过的域名所对应的ip地址,有的话,直接跳过dns解析了,若是没有,就会找硬盘的hosts文件,看看有没有,有的话,直接找到hosts 255文件里面的ip;■如果本地的hosts文件没有能得到对应的ip地址,浏览器会发出一个dns请求到本地dns服务器,本地dns服务器一般都是你的网络接入服务器商提供, 比如中国电信,中国移动等。■查询你输入的网址的DNS请求到达本地DNS服务器之后,本地DNS服务器会首先查询它的缓存记录,如果缓存中有此原创 2021-06-24 10:46:42 · 179 阅读 · 0 评论 -
浏览器对同一 Host 建立 TCP 连接到的数量有没有限制
若在 HTTP/1.1 时代,那个时候没有多路传输,当浏览器拿到一个有几十张图片的网页该怎么办呢?肯定不能只开一个 TCP 连接顺序下载,那样用户肯定等的很难受,但是如果每个图片都开一个 TCP 连接发 HTTP 请求,那电脑或者服务器都可能受不了,要是有 1000 张图片的话总不能开 1000个TCP 连接吧,你的电脑同意 NAT 也不一定会同意。有。Chrome 最多允许对同一个 Host 建立六个 TCP 连接。不同的浏览器有一些区别。如果图片都是 HTTPS 连接并且在同一个域名下,那么浏览器原创 2021-06-24 10:38:33 · 2060 阅读 · 0 评论 -
GET 和 POST 的区别
get是获取数据,post是修改数据。get把请求的数据放在url上, 以?分割URL和传输数据,参数之间以&相连,所以get不太安全。而post把数据放在HTTP的包体内(requrest body)。get提交的数据最大是2k( 限制实际上取决于浏览器), post理论上没有限制。GET产生一个TCP数据包,浏览器会把http header和data一并发送出去,服务器响应200(返回数据)。POST产生两个TCP数据包,浏览器先发送header,服务器响应100 continue,浏.原创 2021-06-24 10:31:07 · 163 阅读 · 0 评论 -
在浏览器中输入url地址后显示主页的过程?
1、根据域名,进行DNS域名解析;2、拿到解析的IP地址,建立TCP连接;3、向IP地址,发送HTTP请求;4、服务器处理请求;5、返回响应结果;6、关闭TCP连接;7、浏览器解析HTML;8、浏览器布局渲染。...原创 2021-06-23 14:32:02 · 180 阅读 · 1 评论 -
TCP连接与HTTP请求【总结】
1、一个TCP连接可以对应几个HTTP请求?如果维持连接,一个 TCP 连接是可以发送多个 HTTP 请求的。2、一个 TCP 连接中 HTTP 请求发送可以一起发送吗?HTTP/1.1 存在一个问题,单个 TCP 连接在同一时刻只能处理一个请求,意思是说:两个请求的生命周期不能重叠,任意两个 HTTP 请求从开始到结束的时间在同一个 TCP 连接里不能重叠。在 HTTP/1.1 存在 Pipelining 技术可以完成这个多个请求同时发送,但是由于浏览器默认关闭,所以可以认为这是不可行的。在 HT原创 2021-06-23 14:29:41 · 1092 阅读 · 0 评论 -
HTTPS和HTTP的区别
1、HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。2、HTTPS协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。3、HTTP和 HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。...原创 2021-06-23 11:48:17 · 163 阅读 · 0 评论 -
TCP粘包/拆包,发生原因以及解决方案
1、TCP粘包/拆包一个完整的业务可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这个就是TCP的拆包和粘包问题。2、发生原因1、应用程序写入数据的字节大小大于套接字发送缓冲区的大小。2、进行MSS大小的TCP分段。( MSS=TCP报文段长度-TCP首部长度)3、以太网的payload大于MTU进行IP分片。( MTU指:一种通信协议的某一层上面所能通过的最大数据包大小。)3、解决方案1、消息定长。2、在包尾部增加回车或者空格符等特殊字符进行分割。3.原创 2021-06-23 11:18:30 · 1218 阅读 · 0 评论 -
HTTP请求方法
客户端发送的 请求报文 第一行为请求行,包含了方法字段。根据 HTTP 标准,HTTP 请求可以使用多种请求方法。HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD方法。HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。现在这九种请求方法概括如下:...原创 2021-06-23 11:03:02 · 112 阅读 · 0 评论 -
HTTP长连接和短连接的区别
在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。而从HTTP/1.1起,默认使用长连接,用以保持连接特性原创 2021-06-23 10:50:00 · 356 阅读 · 0 评论 -
区域传送用TCP协议的原因
原因:1、TCP协议可靠性好!! 从主DNS上复制内容通常,倾向可靠的UDP 。2、TCP协议传输的内容大!! UDP协议最大只能传512字节的,当同步的数据大于512字节,采用TCP协议比较好。原创 2021-06-23 10:49:15 · 563 阅读 · 0 评论 -
域名解析用UDP协议的原因
主要原因:UDP快!!!因为UDP的DNS协议只要一个请求、一个应答就好了。使用基于TCP的DNS协议要三次握手、发送数据以及应答、四次挥手,但是UDP协议传输内容不能超过512字节。不过客户端向DNS服务器查询域名,一般返回的内容都不超过512字节,用UDP传输即可。...原创 2021-06-23 09:50:08 · 1031 阅读 · 0 评论 -
DNS的定义及工作原理
1、DNS的定义:官方解释: DNS ( Domain Name System ,域名系统) ,因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。**通俗的讲,**我们更习惯于记住一一个网站的名字,比如www.baidu.com,而不是记住它的ip地址,比如:167.23.10.2。2、DNS的工作原理:将主机域名转换为ip地址,属于应用层协议原创 2021-06-23 09:19:28 · 8595 阅读 · 0 评论 -
一次完整的HTTP请求过程
说法一:■建立起客户机和服务器连接。■建立连接后,客户机发送一个请求给服务器。■服务器收到请求给予响应信息。■客户端浏览器将返回的内容解析并呈现,断开连接。说法二:■域名解析–>■发起TCP的3次握手–>■建立TCP连接后发起ttp请求–>■服务器响应ttp请求,浏览器得到html代码–>■浏览器解析html代码,并请求html代码中的资源(如js、css、 图片等) -->■浏览器对页面进行渲染呈现给用户。...原创 2021-06-23 09:09:58 · 126 阅读 · 0 评论 -
OSI的七层模型及其各自的功能
OSI的七层模型及其各自的功能OSI(Open System Interconnect),即开放式系统互联。简要概括●物理层:底层数据传输,如网线;网卡标准。●数据链路层:定义数据的基本格式,如何传输,如何标识;如网卡MAC地址。●网络层:定义IP编址,定义路由功能;如不同设备的数据转发。●传输层:端到端传输数据的基本功能;如TCP、 UDP。●会话层:控制应用程序之间会话能力;如不同软件数据分发给不同软件。●表示层:数据格式标识,基本压缩加密功能。●应用层:各种应用软件,包括Web应原创 2021-06-19 21:21:57 · 1452 阅读 · 1 评论