计算机网络笔记整理

本文详细介绍了HTTP中的GET与POST方法的区别,包括参数、用途、缓存和安全性。同时,探讨了TCP与UDP的连接、安全和效率差异,以及TCP的三次握手过程。此外,讲解了HTTP协议的不同版本特点,如HTTP 1.0、1.1和2.0的改进。还涉及了HTTPS的加密流程、DNS域名解析和ARP协议的工作原理。最后,讨论了WebSocket通信协议以及如何防范DOS攻击、DNS欺骗和SQL注入等网络安全问题。
摘要由CSDN通过智能技术生成

GET/POST区别
参数

GET传递的参数只能带URL后面,文本格式QueryString,各浏览器一般有长度限制,一般认为是2083,如果有中文字符更短。提交到服务器端的数据量小。
POST可以传递application/x-www-form-urlencoded的类似QueryString、multipart/form-data的二进制报文格式(支持文件信息嵌入报文传输)、纯文本或二进制的body参数。提交到服务器端的数据量大。

用途:

GET用于从服务器端获取数据,包括静态资源(HTML|JS|CSS|Image等等)、动态数据展示(列表数据、详情数据等等)。
POST用于向服务器提交数据,比如增删改数据,提交一个表单新建一个用户、或修改一个用户等。

缓存:

GET时默认可以复用前面的请求数据作为缓存结果返回,此时以完整的URL作为缓存数据的KEY。所以有时候为了强制每次请求都是新数据,我们可以在URL后面加上一个随机参数Math.random或时间戳new Date().getTime()、或版本号,比如abc.com?a=1&rnd=0.123987之类的。这也是目前一些静态资源后面加一个很长的版本号的原因,jquery-min.js?v=13877770表示一个版本,当页面引用jquery-min.js?v=13877771时浏览器必然会重新去服务器请求这个资源。jQuery.ajax方法,如果cache=false,则会在GET请求参数中附加”_={timestamp}”来禁用缓存。
POST一般则不会被这些缓存因素影响。

安全性:
默认对于nginx的access log,会自动记录get或post的完整URL,包括其中带的参数。
对于POST来说,请求的报文却不会被记录,这些对于敏感数据来说,POST更安全一些。

自动化性能测试:

基于上面提到的nginx日志,可以使用grep GET+日期,awk格式化,然后sort -u去重,从而提取到某天的所有GET请求URL,使用程序模拟登陆,然后请求所有URL即可获取简单的性能测试数据,每个请求是否正确,响应时间多少等等。
但是对于POST请求,因为不知道报文,无法这样简单处理。可以通过nginx-lua获取报文输出到log,这样格式化会麻烦很多,但不失为一个办法。

UDP/TCP区别

连接方面百区别
TCP面向连接(如打电话要先拨号建立连接)。
UDP是无连接的,即发送数据之前不需要建立连接。

安全方面的区别

TCP提供可靠的服务,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到度达。
UDP尽最大努力交付,即不保证可靠交付。

传输效率的区别
TCP传输效率相对较低。
UDP传输效率高,适用于对高版速传输和实时性有较高的通信或广播通权信。

连接对象数量的区别
TCP连接只能是点到点、一对一的。
UDP支持一对一,一对多,多对一和多对多的交互通信。

3.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状态,完成三次握手.

完成三次握手,客户端与服务器开始传送数据

什么是 TIME-WAIT?

TIME_WAIT的意思是结束了这次连接。
简单来说:time_wait状态是四次挥手中server向client发送FIN终止连接后进入的状态。

4.HTTP 1.0、1.1、2.0

最早在1996年在网页中使用,内容简单,所以浏览器的每次请求都需要与服务器建立一个TCP连接,服务器处理完成后立即断开TCP连接(无连接),服务器不跟踪每个客户端也不记录过去的请求(无状态)。

HTTP1.1:

到1999年广泛在各大浏览器网络请求中使用,HTTP/1.0中默认使用Connection: close。在HTTP/1.1中已经默认使用Connection: keep-alive(长连接),避免了连接建立和释放的开销,但服务器必须按照客户端请求的先后顺序依次回送相应的结果,以保证客户端能够区分出每次请求的响应内容。通过Content-Length字段来判断当前请求的数据是否已经全部接收。不允许同时存在两个并行的响应。

HTTP2.0:

HTTP/2引入二进制数据帧和流的概念,其中帧对数据进行顺序标识,(流(stream):已建立连接上的双向字节流;消息:与逻辑消息对应的完整的一系列数据帧;帧:HTTP2.0通信的最小单位,每个帧包含帧头部,至少也会标识出当前帧所属的流(stream id))这样浏览器收到数据之后,就可以按照序列对数据进行合并,而不会出现合并后数据错乱的情况。同样是因为有了序列,服务器就可以并行的传输数据,这就是流所做的事情。这些数据帧都在一个tcp连接(可以承载任意数量的双向数据流)上并行发送。

http1.0和http1.1的主要区别如下:

1、缓存处理:1.1添加更多的缓存控制策略(如:Entity tag,If-Match)

2、网络连接的优化:1.1支持断点续传

3、错误状态码的增多:1.1新增了24个错误状态响应码,丰富的错误码更加明确各个状态

4、Host头处理:支持Host头域,不在以IP为请求方标志

5、长连接:减少了建立和关闭连接的消耗和延迟。

http1.1和http2.0的主要区别:

1、新的传输格式:2.0使用二进制格式,1.0依然使用基于文本格式

2、多路复用:连接共享,不同的request可以使用同一个连接传输(最后根据每个request上的id号组合成正常的请求)

3、header压缩:由于1.X中header带有大量的信息,并且得重复传输,2.0使用encoder来减少需要传输的hearder大小

4、服务端推送:同google的SPDUY(1.0的一种升级)一样

HTTPS流程,SSL,非对称加密,对称加密,RSA具体实现

一个HTTPS请求实际上包含了两次HTTP传输,可以细分为8步。

<1>客户端向服务器发起HTTPS请求,连接到服务器的443端口

<2>服务器端有一个密钥对,即公钥和私钥,是用来进行非对称加密使用的,服务器端保存着私钥,不能将其泄露,公钥可以发送给任何人。

<3>服务器将自己的公钥发送给客户端。

<4>客户端收到服务器端的证书之后,会对证书进行检查,验证其合法性,如果发现发现证书有问题,那么HTTPS传输就无法继续。严格的说,这里应该是验证服务器发送的数字证书的合法性,关于客户端如何验证数字证书的合法性,下文会进行说明。如果公钥合格,那么客户端会生成一个随机值,这个随机值就是用于进行对称加密的密钥,我们将该密钥称之为client key,即客户端密钥,这样在概念上和服务器端的密钥容易进行区分。然后用服务器的公钥对客户端密钥进行非对称加密,这样客户端密钥就变成密文了,至此,HTTPS中的第一次HTTP请求结束。

<5>客户端会发起HTTPS中的第二个HTTP请求,将加密之后的客户端密钥发送给服务器。

<6>服务器接收到客户端发来的密文之后,会用自己的私钥对其进行非对称解密,解密之后的明文就是客户端密钥,然后用客户端密钥对数据进行对称加密,这样数据就变成了密文。

<7>然后服务器将加密后的密文发送给客户端。

<8>客户端收到服务器发送来的密文,用客户端密钥对其进行对称解密,得到服务器发送的数据。这样HTTPS中的第二个HTTP请求结束,整个HTTPS传输完成。

SSL:(Secure Socket Layer,安全套接字层),为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取。当前版本为3.0。它已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输。

服务器端的公钥和私钥,用来进行非对称加密

客户端生成的随机密钥,用来进行对称加密

RSA的加密过程可以使用一个通式来表达

    密文=明文EmodN

公钥=(E,N)

     RSA的解密同样可以使用一个通式来表达

    明文=密文DmodN

                      私钥=(D,N)

OSI七层模型是什么,都有哪些协议,TCP/IP四层是什么

第一层物理层 第二层数据链路层 第三层网络层 第四层传输层 第五层会话层

第六层表示层 第七层应用层

1、物理层协议有:baiEIA/TIA-232,du EIA/TIA-499,V.35, V.24,RJ45, Ethernet, 802.3

2、数据链路层协议有:zhiFrame Relay,HDLC,PPP, IEEE
802.3/802.2

3、网络层协议有:IP,IPX,AppleTalk DDP

4、传输层协议有:TCP,UDP,SPX

5、会话层协议有:RPC,SQL,NFS,NetBIOS,names,AppleTalk

6、表示层协议有:TIFF,GIF,JPEG,PICT,ASCII,EBCDIC,encryption

7、应用层协议有:FTP,WWW,Telnet,NFS,SMTP,Gateway,SNMP

第一层:网络接口层 第二层:网间层 第三层:传输层 第四层:应用层

DNS,ARP原理

DNS( Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP/IP网络,它所提供的服务是用来将主机名和域名转换为IP地址的工作。

DNS domain name system 主要作用就是将主机域名转换为ip地址

ARP协议是“Address Resolution Protocol”(地bai址解析协议)的缩写。在局域网du中,网络中实际传输的zhi是“帧”,帧里面是有dao目标主机的MAC地址的。在以太网中,一个主机和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。

地址栏输入URL会发生什么

1、浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;
2、解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接;
3、浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;
4、服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;
5、释放 TCP连接;
6、浏览器将该 html文本并显示内容

WebSocket是什么
WebSocket是一种在单个TCP连接上进行全双工通信的协议,WebSocket通信协议于2011年被IETF定为标准【RFC 6455】,并由RFC7936补充规范,【WebSocket API】也被W3C定为标准

DOS攻击如何解决

采用高性能的网络设备 尽量避免NAT的使用
充足的网络带宽保证 升级主机服务器硬件

DNS欺骗攻击怎么解决

进行IP地址和MAC地址的绑定
使用Digital Password进行辨别
优化DNS SERVER的相关项目设置
直接使用IP地址访问
对DNS数据包进行监测

ARP欺骗解决

在PC上绑定安全网关的IP和MAC地址: 首先,获得安全网关的内网的MAC地址,
编写一个批处理文件rarp.bat 在安全网关上绑定用户主机的IP和MAC地址
SQL注入
还是避免数据变成代码被执行,时刻分清代码和数据的界限。而具体到SQL注入来说,被执行的恶意代码是通过数据库的SQL解释引擎编译得到的,所以只要避免用户输入的数据被数据库系统编译就可以了

Iframe安全问题

  1. 关闭网站,显示日常维护的消息。立即关闭网站是一个良好的行为,防止恶意软件在受害者计算机上传播。

  2. 创建备份站点(核心文件,数据库和其他所有的文件夹)。即使它是一个受感染的站点,备份也是必要的。如果在清理过程做了某些错误操作可以恢复到之前的同等情况。

  3. 确保你的计算机没有感染到恶意软件和病毒,如果你不确定你的计算机是否受到感染,做一次安全清理。这是一个必要的步骤,因为恶意软件可能会有记录FTP凭据的能力。

4.修改所有与网站相关的密码(FTP密码,SSH密码,Admin密码,Cpanl或其他主机面板密码,数据库密码等等)。

  1. 如果你的网站需要一个干净的备份,使用反病毒软件扫描一次。之后,上传到你的Web服务器,并检查各项功能。如果仍然有问题,那么需要手动检查文件,以确定注入的代码。

  2. 如果没有干净的备份,手动找到注入的代码并删除。在上文中,以分析了两种iframe注入(简单的iframe注入和隐藏的iframe注入),可能的情况下,按照之前的程序,分析可能存在的注入(建议在每一次变化后做一个备份)。

  3. 确保站点不再存在注入代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值