计算机网络常见问题归纳

目录

  • 一,tcp三次握手四次挥手
  • 二,网络层七层协议
  • 三,输入url后发生了什么?
  • 四,封装和分用
  • 五,HTTPS和HTTP的区别主要如下
  • 六,TCP提供可靠传输的工作原理和实现过程
  • 七,Get和Post之间的区别
  • 八,tcp/udp区别,生活场景中哪些需要哪些协议
  • 九,Cookie 和Session区别:
  • 十,深拷贝和浅拷贝区别是什么?
  • 十一,arp协议<地址解析协议>
  • 十二,以太网数据包的大小最大为多少
  • 十三,SYN泛洪攻击的原理

一,tcp三次握手四次挥手

一,tcp三次握手四次挥手
(1)tcp三次握手
计算机网络常见问题归纳_第1张图片
MSL:最大报文段生存时间
SYN:同步序列编号
seq序列号:用来标记数据段的顺序,seq就是发送的报文段中第一个字节的数据编号
ack确认号:期待收到对方下一个报文段的第一个数据字节的序号;
TCP三次握手:
第一次握手:客户端发送一个SYN=1,seq=x的SYN包
第二次握手:服务器如果收到客户端发来的SYN包,会回复一个ACK=1,SYN=1,seq=y,ack=x+1的ACK包+SYN包,
第三次握手:客户端收到服务器发送来的ACK+SYN包,这时候回复一个ACK=1,seq=x+1,ack=y+1的ACK包,并且这时候客户端可以给服务器发送数据 <为了避免服务器一直等待客户端的连接>
举列:
就用打电话的方式来简单说明一下,三次握手,C给S打电话,然后C说:你能听得到我说话吗?然后S说:我能听到你说话,你能听到我说话吗?然后C最后回应一下:我也能听到。这样就确保了双方都能听到对方说话
{
客户端然后发送http报文,服务器把网页返回给客户端
}
(2)tcp四次挥手

计算机网络常见问题归纳_第2张图片
《FIN为1时,发送端完成任务,释放一个连接》
第一次挥手:客户端发出FIN=1,seq=u的一个FIN包,并且停止发送数据,客户端进入终止等待1状态
第二次挥手:服务器接收到客户端发来的FIN数据包之后,回复一个ACK=1,seq=v,ack=u+1的ACK包,服务器进入关闭等待状态,当客户端收到了发过去的ACK包后,进入终止等待2状态
第三次挥手:然后服务器传送最后没有发完的数据,发送结束后,再给客户端发一个ACK=1,FIN=1,seq=w,ack=u+1的ACK+FIN包,然后服务器进入最后确认状态
第四次挥手:客户端接受完服务器发送的数据和ACK+FIN包后,最后回复一个ACK=1,seq=u+1,ack=w+1,然后客户端进入时间等待状态,最后客户端等待2MSL时间后,服务器没有再发送一个FIN包,那说明刚刚发的ACK数据包,服务器已经收到,服务器那边已经关闭
举例:
也用打电话的方式来说一下吧。
C给S说:我准备挂电话了,你还有什么需要说的吗
S回应:我听到你准备挂电话,但是你别急,我把最后几句话说完(这里说的话,就类似于网络中发送的数据包)
C听到S给的回应:然后不给S说什么了,然后就接受S最后发送的数据
当S说完之后,S又说:我说完了,我准备挂了,可以吗
C说:我收到了,你挂吧,然后C等待S收到后,然后再挂电话,S收到C最后说的我收到了,你挂吧,然后S就可以挂电话了
(3)为什么连接的时候是三次握手,关闭的时候却是四次挥手?
因为当服务端收到客户端的SYN连接请求后,可以直接发送ACK+SYN包。但是关闭连接时,当服务器收到FIN包时很有可能因为服务器还有没有发送完的数据,并不会立即关闭Socket,所以只能先回复一个ACK,只有等服务器端把最后的数据发送完毕后,才能发送FIN报文,所以需要四次挥手
(4)为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回CLOSE状态?
因为有可能客户端最后一次回应的ACK包丢失。服务器如果没有收到ACK,将不断重复发送FIN片段,所以客户端不能立即关闭,它必须确认服务器接收到了该ACK
(5)为什么不能用两次握手进行连接?
三次握手完成两个重要的功能,双方都要知道自己能发送数据并被对方接收到,如果是两次握手的话,第一次客户端发送连接请求,服务器给出回应并且发送SYN,这时候客户端可以确定,服务器能接收到我发送的数据,如果省略了最后一步,服务器就不能确定,自己发送的数据,客户端能否收到。所以需要客户端第三次握手,再回复一下服务器发来的SYN
(6)如果已经建立了连接了,但是客户端突然出了故障怎么办?
TCP还设有一个保活计时器,当客户端出现故障,服务器不能一直等下去,服务器每收到客户端的请求后都会重新复位一下这个计时器,时间通常设置为2小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,每隔75秒钟发送一次,若一连发送10个探测报文任然没反应,服务器就认为客户端出了故障,接着就关闭连接

二,网络层七层协议

二,网络层七层协议
应用层:提供了访问网络服务的接口
表示层:提供数据格式转换服务
会话层:建立端连接并提供访问验证和会话管理
传输层:提供应用程序之间的逻辑通信
网络层:为数据在节点之间传输创建逻辑链路,并分组转发数据
数据链路层:在通信的实体间建立数据链路连接
物理层:传输比特流

我自己理解的7层,
应用层:提供了做很多事情的网络服务接口,例如文件传输FTP协议,超文本传输协议http等等。
表示层:提供数据格式转换,加密解密,压缩解压。
会话层:进行会话管理(建立、维护、终止)。
传输层:负责网络中两个主机进程间通信网络服务,协议TCP/UDP。
网络层:负责路由分发,解决不在一个局域网,进行路由转发等等。 类似于生活中:快递分解公司,发过去之后根据目的往下一个目的去分解
数据链路层:网络层找到接收方的所在的局域网进行数据链路连接。
物理层:传输比特流,网线之类的,这样发过去了

计算机网络常见问题归纳_第3张图片

那我举个实际的例子,当用户A和B进行FTP(应用层的一个文件传输协议)通信时,首先A激活应用层的21端口,要求对自己提供文件传输服务,21端口激活后,把数据发给表示层,表示层对数据进行加密,压缩,之后表示层再把数据交给会话层,会话层建立一次会话和结束一次会话。但是建立会话,结束会话,自己不去实现,只进行会话管理,具体会话需要传输层实现,传输层选择一种建立连接的方式TCP/UDP,但是它还是没有建立连接,只是选择了一种建立连接的方式,然后加上协议头部,交给了网络层,网络层为这次会话选择路由,加上协议头部并交给数据链路层,数据链路层才真正的负责建立这次会话,建立这次连接,加上帧头并交给物理层,让物理层进行比特流的传输。

三,输入url后发生了什么?

三,输入url后发生了什么?
端口号只具有本地意义,即端口号只是为了标志计算机应用层中的各进程,在互联网中,不同计算机的相同端口号是没有联系的。
端口用来定位服务器上的服务,互联网上的ip地址是来定位主机的
客户端上端口用来确定数据包返回给哪个客户端
计算机网络常见问题归纳_第4张图片
(1)域名解析解析出它的ip地址,浏览器解析出它的端口号
计算机网络常见问题归纳_第5张图片

计算机网络常见问题归纳_第6张图片

DNS是因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的去访问互联网而不用去记住能够被机器直接读取的IP地址。通过域名,最终得到该域名对应的IP地址的过程则是域名解析的过程。<迭代查询>
计算机网络常见问题归纳_第7张图片

第一步:客户机提出域名解析请求,并将该请求发送给本地的域名服务器。

第二步:当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接把查询的结果返回。
第三步:如果本地的缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域)的主域名服务器的地址。
第四步:本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该纪录,则返回相关的下级的域名服务器的地址。
第五步:重复第四步,直到找到正确的纪录。
原文链接:https://blog.csdn.net/jochebed666/article/details/88377253
(2)三次握手建立连接
(3)浏览器给web服务器发哦是那个一个http请求
请求中也包含浏览器存储的该域名的cookies。可能你已经知道,在不同页面请求当中,cookies是与跟踪一个网站状态相匹配的键值。这样cookies会存储登录用户名,服务器分配的密码和一些用户设置等。Cookies会以文本文档形式存储在客户机里,每次请求时发送给服务器。
注意: HTTP是无连接、无状态的,即HTTP在传输完成后就会断开,并且下一次登录时不会记录上次的登录状态。
(4)服务器收到请求并响应HTTP请求
请求处理:阅读请求及它的参数和cookies。它会读取也可能更新一些数据,并将数据存储在服务器上。然后,需求处理会生成一个HTML响应
Content-type:《头信息》数据类型,指定消息体的格式,它用来告诉服务端如何处理请求的数据,以及告诉客户端如何解析响应的数据
请注意报头中把Content-type设置为“text/html”。报头让浏览器将该响应内容以HTML形式呈现,而不是以文件形式下载它。浏览器会根据报头信息决定如何解释该响应,不过同时也会考虑像URL扩展内容等其他因素。
(5)浏览器对页面进行渲染呈现给用户
(6)关闭tcp连接<四次挥手>

四,封装和分用

四,封装和分用
封装:发送数据时,从高到低的顺序,按照对应网络分层的协议包装数据
分用:收到数据时,从低到高进行对应网络分层的协议解析
计算机网络常见问题归纳_第8张图片

五,HTTPS和HTTP的区别主要如下

五,HTTPS和HTTP的区别主要如下
(1)http:<超文本传输协议>它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。
计算机网络常见问题归纳_第9张图片

1,http响应状态码
状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:
1xx:指示信息–表示请求已接收,继续处理
2xx:成功–表示请求已被成功接收、理解、接受
3xx:重定向–要完成请求必须进行更进一步的操作
4xx:客户端错误–请求有语法错误或请求无法实现
5xx:服务器端错误–服务器未能实现合法的请求
常见状态代码、状态描述、说明:
200 OK //客户端请求成功
400 Bad Request //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
403 Forbidden //服务器收到请求,但是拒绝提供服务
404 Not Found //请求资源不存在,eg:输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
502 (错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。
503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
504 (网关超时) 服务器作为网关或代理,但是没有及时从上游服务器收到请求。
2,http–无连接,无状态
无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。即我们给服务器发送 HTTP 请求之后,服务器根据请求,会给我们发送数据过来,但是,发送完,不会记录任何信息。
计算机网络常见问题归纳_第10张图片
(2)http和https的区别
1、HTTPS 协议需要到 CA (Certificate Authority,证书颁发机构)申请证书,一般免费证书较少,因而需要一定费用。(以前的网易官网是http,而网易邮箱是 https 。)

2、HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议。

3、HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4、HTTP 的连接很简单,是无状态的。HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。(无状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息。)
原文链接:https://blog.csdn.net/qq_38289815/article/details/80969419
SSL<握手协议>+HTTP网络传输流程:

(1)先进行3次握手,保证通信的可靠
(2)客户端发送协议版本号、一个客户端生成的随机数,以及客户端支持的加密方法
(3)服务器确认双方使用的加密方法,服务器生成私钥,和公钥(非对称加密),然后将证书,公钥、一个服务器生成的随机数发送回去。
(4)客户端先验证CA证书,验证通过后,客户端生成一个随机数,然后通过服务器传来的公钥对该随机数进行加密,传输给服务器
(5)服务器接收到后,通过私钥进行解密,拿到该随机数后(现在服务器和客户使用这三个随机数和加密方法,生成"对话秘钥",后面对话就可以对称加密,提高效率,非对称加密,效率低)。
5,为什么HTTPS是7次握手?
(1)TCP协议需要通过三次握手建立TCP连接保证通信的可靠性
(2)TLS/SSL协议会在TCP协议之上通过四次握手建立TLS/SSL连接保证通信的安全性

六,TCP提供可靠传输的工作原理和实现过程

六,TCP提供可靠传输的工作原理和实现过程
1,首先,采用三次握手来建立TCP连接,四次握手来释放TCP连接,从而保证建立的传输信道是可靠的。
2,其次,TCP采用了连续ARQ协议(超时自动重传ARQ协议)来保证数据传输的正确性,使用滑动窗口协议来保证接收方能够及时处理所接收到的数据,进行流量控制。

计算机网络常见问题归纳_第11张图片

3,最后,TCP使用快重传和快恢复来进行拥塞控制,避免网络拥塞。
计算机网络常见问题归纳_第12张图片
拥塞机制中的快重传:
快重传要求接收方在收到一个失序的报文段后就立即发出重复确认(为的是使发送方及早知道有报文段没有到达对方,可提高网络吞吐量约20%)而不要等到自己发送数据时捎带确认。快重传算法规定,发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段,而不必继续等待设置的重传计时器时间到期。
快恢复算法:不用除到1,直接从除以2的位置快开始门限开始,“加法增大”

七,Get和Post之间的区别

七,Get和Post之间的区别
前言:
GET和POST本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。
HTTP定义了与服务器交互的不同方法,最常用的方法有四种Put,Delete、post,get,即增删改查。

1.Get,它用于获取信息,它只是获取、查询数据,也就是说它不会修改服务器上的数据,从这点来讲,它是数据安全的,而稍后会提到的Post它是可以修改数据的,所以这也是两者差别之一了。

2.Post,它是可以向服务器发送修改请求,从而修改服务器的,比方说,我们要在论坛上回贴、在博客上评论,这就要用到Post了,当然它也是可以仅仅获取数据的。
(1)报文格式上,不带参数时,最大的区别就是第一行方法名不同
POST /uri HTTP/1.1 \r\n
GET /uri HTTP/1.1 \r\n
在约定中,Get方法的参数应该放在url中,Post方法参数应该放在body中。
(2)GET数据在 URL 中对所有人都是可见的。
POST数据不会显示在 URL 中。
与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。在发送密码或其他敏 感信息时绝不要使用 GET !
POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中

(3)GET请求在URL中传送的参数是有长度限制的,而POST没有
(4)对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
也就是说,GET只需要汽车跑一趟就把货送到了,而POST得跑两趟,第一趟,先去和服务器打个招呼“嗨,我等下要送一批货来,你们打开门迎接我”,然后再回头把货送过去。

八,tcp/udp区别,生活场景中哪些需要哪些协议

八,tcp/udp区别,生活场景中哪些需要哪些协议
tcp:面向连接;可靠性高;时延大;适用于大文件
UDP:无连接;可靠性低;时延小;适合小文件
什么时候应该使用TCP:
当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输的协议。
那么什么时候应该使用UDP:
当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以使用UDP。
比如,日常生活中,常见使用UDP协议的应用如下:QQ消息,QQ语音等

九,Cookie 和Session区别:

九,Cookie 和Session区别:
●Cookie是把用户的数据写给用户的浏览器,浏览器保存 (可以保存多个)
●Session把用户的数据写到用户独占Session中,服务器端保存 (保存重要的信息,减少服务器资源的浪费)

1,session 在服务器端,cookie 在客户端(浏览器)
2,session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,如果主要考虑到减轻服务器性能方面,应当使用COOKIE
3,session 的运行依赖 session id,而 session id 是存在 cookie 中的,也就是说,如果浏览器禁用了 cookie ,同时 session 也会失效(但是可以通过其它方式实现,比如在 url 中传递 session_id)
4,session 可以放在 文件、数据库、或内存中都可以。
5,cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,如果主要考虑到安全应当使用session,用户验证这种场合一般会用 session
6,单个cookie在客户端的限制是4K
session 原理:客户端第一次访问服务器,服务器为客户端创建一个session对象,并且给一个唯一的标识(sessionID),随reponse对象发给客户端,客户端把sessionID保存在cookie,每次浏览器访问服务器时,都会把保存sessionID的cookie发给服务器,用来确定该浏览器的Session。

十,深拷贝和浅拷贝区别是什么?

十,深拷贝和浅拷贝区别是什么?
计算机网络常见问题归纳_第13张图片数据分为基本数据类型和引用数据类型。基本数据类型:数据直接存储在栈中;引用数据类型:存储在栈中的是对象的引用地址,真实的对象数据存放在堆内存里。
浅拷贝:<浅拷贝是创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。>对于基础数据类型:直接复制数据值;对于引用数据类型:只是复制了对象的引用地址,新旧对象指向同一个内存地址,修改其中一个对象的值,另一个对象的值随之改变。
深拷贝:<深拷贝是将一个对象从内存中完整的拷贝一份出来,从堆内存中开辟一个新的区域存放新对象,且修改新对象不会影响原对象。>对于基础数据类型:直接复制数据值;对于引用数据类型:开辟新的内存空间,在新的内存空间里复制一个一模一样的对象,新老对象不共享内存,修改其中一个对象的值,不会影响另一个对象。
深拷贝相比于浅拷贝速度较慢并且花销较大。

十一,arp协议<地址解析协议>

十一,arp协议<地址解析协议>
计算机网络常见问题归纳_第14张图片
arp协议的作用:
ARP命令可用于查询本机ARP缓存中I P地址和MAC地址的对应关系、添加或删除静态对应关系等
主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该I P地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
arp协议的工作原理:
首先,每台主机都会在自己的ARP缓冲区中建立一个 ARP列表,以表示I P地址和MAC地址的对应关系。当源主机需要将一个数据包要发送到目的主机时,会首先检查自己 ARP列表中是否存在该 I P地址对应的MAC地址,如果有,就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的I P地址。
网络中所有的主机收到这个ARP请求后,会检查数据包中的目的I P是否和自己的I P地址一致。如果不相同就忽略此数据包;如果相同,该主机首先将发送端的MAC地址和I P地址添加到自己的ARP列表中,如果ARP表中已经存在该I P的信息,则将其覆盖,然后给源主机发送一个 ARP响应数据包,告诉对方自己是它需要查找的MAC地址;源主机收到这个ARP响应数据包后,将得到的目的主机的I P地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。
举列:
根据上面的所讲的原理,我们简单说明这个过程:A要和B通讯,A就需要知道B的以太网地址,于是A发送一个ARP请求广播(谁是192.168.10.2 ,请告诉192.168.10.1),当B收到该广播,就检查自己,结果发现和自己的一致,然后就向A发送一个ARP单播应答(192.168.10.2 在BB-BB-BB-BB-BB-BB)。

十二,以太网数据包的大小最大为多少

十二,以太网数据包的大小最大为多少
数据链路层:1500
网络层:头部站20字节:最长只能为:1500-20=1480字节
传输层:UDP占8字节:最长只能为:1480-8=1472字节
TCP占20字节:最长只能为:1480-20=1460
超过1500字节怎么办?
  这也就是说IP数据报大于1500字节,大于MTU.这个时候发送方IP层就需要分片(fragmentation).
  把数据报分成若干片,使每一片都小于MTU.而接收方IP层则需要进行数据报的重组.
当数据报的长度超过帧的MTU时,它将被分片传输,分片能发生在发送端,也可能发生在中转路由器上,而且可能在传输过程中被多次分片,但只有在最终的目标机器上,这些分片才会被内核中的IP模块重新组装
<十三~十五 WEB攻击>
web攻击:
XSS攻击:跨站脚本攻击
XSS的攻击目标是为了盗取存储在客户端的cookie或者其他网站用于识别客户端身份的敏感信息。
XSS通常可以分为两大类:
1,存储型XSS,主要出现在让用户输入数据,供其他浏览此页的用户进行查看的地方,应用程序从数据库中查询数据,在页面中显示出来,攻击者在相关页面输入恶意的脚本数据后,用户浏览此类页面时就可能受到攻击。
恶意用户的Html输入Web程序->应用程序进入数据库查询数据->Web程序->用户浏览器显示出来
2,反射型XSS,主要做法是将脚本代码加入URL地址的请求参数里,请求参数进入程序后在页面直接输出,用户点击类似的恶意链接就可能受到攻击。

十三,SYN泛洪攻击的原理

十三,SYN泛洪攻击的原理
正常情况下TCP连接建立过程如下:客户端首先向服务端发送SYN报文段,随后服务端回以SYNACK报文段到达客户端,最后客户端向服务端发送ACK报文段完成三次握手,后续就是上层业务数据交互,直到某一方断开连接。

那么假如在握手的过程中,客户端因为莫名崩溃等原因,收到SYNACK报文段后不再回以ACK报文段,服务端将如何处置呢?这时服务端会“优雅地”再等等,会不会是发送的包丢失了呢?于是重新发送一遍SYNACK报文段,再收不到来自客户端的ACK报文段响应的话,就把这次连接丢弃掉。这个过程大约会“优雅地”持续分钟级,这个持续时间被称作SYN timeout时间。

如果只有个别这样的异常情况,目标服务端处理起来自是毫不费力;可如果大量这样的情况出现,对服务端来说就不堪重负了。

如果大量的握手请求涌向TCP服务端,而它们只发出SYN报文段而不以ACK报文段响应结束握手,服务端就要为这每一个请求都维持约一分多钟的连接去等待ACK报文段,也就形成所谓的“半连接”。维护这些半连接是需要消耗很多服务器的网络连接资源的。如果短时间内这些资源几乎都被半连接占满,那么正常的业务请求在这期间就得不到服务,处于等待状态。

更进一步的,如果这些半连接的握手请求是恶意程序发出,并且持续不断,那么就会导致服务端较长时间内丧失服务功能,这种攻击方式就称为SYN泛洪攻击。
SYN泛洪攻击的防范措施:
(1)采用SYN cookie设置,如果短时间内连续收到某个IP的重复SYN请求,则认为受到了该IP的攻击,丢弃来自该IP的后续请求报文
(2)降低SYN timeout时间,使得主机尽快释放半连接的占用,也是防范SYN泛洪攻击的措施之一。

十四,sql注入

十四,sql注入
sql注入:
由于jdbc程序在执行的过程中sql语句在拼装时使用了由页面传入参数,如果用户恶意传入一些sql中的特殊关键字,会导致sql语句意义发生变化,这种攻击方式就叫做sql注入
防sql注入:
PreparedStatement使用预编译机制,在创建PreparedStatement对象时就需要将sql语句传入,传入的过程中参数要用?替代,这个过程会导致传入的sql被进行预编译,然后再调用PreparedStatement的setXXX将参数设置上去,由于sql语句已经经过了预编译,再传入特殊值也不会起作用了

十五,CSRF跨站点请求伪造(Cross—Site Request Forgery) 攻击

十五,CSRF跨站点请求伪造(Cross—Site Request Forgery) 攻击
CSRF攻击攻击原理及过程如下:

  1. 用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;
    2.在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;
  2. 用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B;
  3. 网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A;
  4. 浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。
    网站A并不知道该请求其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理该请求,导致来自网站B的恶意代码被执行。

十六,TCP如何进行拥塞控制?拥塞控制如何判断发生拥塞?TCP快重传如何判断丢失?

十六,TCP如何进行拥塞控制?拥塞控制如何判断发生拥塞?TCP快重传如何判断丢失?
TCP使用快重传和快恢复来进行拥塞控制,避免网络拥塞。
拥塞控制如何判断发生拥塞?其根据就是没有按时收到确认,虽然没有收到确认可能是其他原因的分组丢失,但是因为无法判定,所以都当做拥塞来处理.
TCP快重传如何判断丢失?快重传算法规定,发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段,而不必继续等待设置的重传计时器时间到期。
拥塞机制中的快重传:
快重传要求接收方在收到一个失序的报文段后就立即发出重复确认(为的是使发送方及早知道有报文段没有到达对方,可提高网络吞吐量约20%)而不要等到自己发送数据时捎带确认。快重传算法规定,发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段,而不必继续等待设置的重传计时器时间到期。
快恢复算法:不用除到1,直接从除以2的位置快开始门限开始,“加法增大”

十七,timewait和2MSL

十七,timewait和2MSL
计算机网络常见问题归纳_第15张图片
time-wait开始的时间为tcp四次挥手中主动关闭连接方发送完最后一次挥手,也就是ACK=1的信号结束后,主动关闭连接方所处的状态。
然后time-wait的的持续时间为2MSL(MSL-报文最大生存时间)
(1)为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回CLOSE状态?
因为有可能客户端最后一次回应的ACK包丢失。服务器如果没有收到ACK,将不断重复发送FIN片段,所以客户端不能立即关闭,它必须确认服务器接收到了该ACK

十八,转发与重定向的区别

十八,转发与重定向的区别
转发是服务器行为,重定向是客户端行为。转发耗时比重定向少。

转发——>客户浏览器发送HTTP请求——>web服务器接受请求——>调用内部一个方法在容器内部完成请求处理和转发动作——>再将转发跳转到的那个网页资源返回给客户; 转发只能在同一个容器内完成 转发的时候浏览器地址是不会变的,在客户浏览器里只会显示第一次进入的那个网址或者路径,客户看不到这个过程,只是得到了想要的目标资源。转发行为浏览器只做了一次请求。(转发只能跳转一次)

重定向——>客户浏览器发送HTTP请求——>web服务器接受请求后发送302状态码以及新的位置给客户浏览器——>客户浏览器发现是302响应,则自动再发送一个新的HTTP请求,请求指向新的地址(302:Found 临时移动,但资源只是临时被移动。即你访问网址A,但是网址A因为服务器端的拦截器或者其他后端代码处理的原因,会被重定向到网址B。)——>服务器根据此请求寻找资源发个客户;再客户浏览器中显示的是重定向之后的路径,客户可以看到地址的变化。重定向行为浏览器做了至少两次请求(重定向可以跳转多次)

你可能感兴趣的:(计算机网络,计算机网络)