计算机网络基础

目录

1.TCP的三次握手、四次挥手过程

2.SYN的攻击原理

3.TCP链接需要三次握手,两次不可以么,为什么?

4.UDP与TCP的区别

5.TCP的的头部是什么样的

6.HTTP和HTTPS的区别,HTTP是哪层?

7.DNS服务

8.从输入网址到返回页面经历了哪些过程?详细问了的DNS寻址过程

9.ipv6与ipv4的区别

10.GET与POST的区别及应用场景

11.五层网络模型以及每层的协议

12.TCP与UDP的协议有哪些

13.对称加密与非对称加密

14.IP地址与MAC地址的区别


1.TCP的三次握手、四次挥手过程

(1)三次握手(我要和你建立链接,你真的要和我建立链接么,我真的要和你建立链接,成功):

第一次握手:客户端发送**SYN J**(SYN=1,seq=J)到服务器(同步信号假设序号为J),进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器收到客户端的SYN包,发送确认信号**ASK J+1**(ASK=1,ask=J+1),同时发送一个**SYN K**(SYN=1,seq=K),即**SYN+ACK包**,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认**ACK K+1**(ASK=1,ack=K+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。随后Client与Server之间可以开始传输数据了。


计算机网络基础


(2). 四次挥手(我要和你断开链接;好的,断吧。我也要和你断开链接;好的,断吧):

第一次挥手:客户端发送一个FIN,关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。

第二次挥手:Server收到FIN后,发送一个ACK给Client,Server进入CLOSE_WAIT状态。此时TCP链接处于半关闭状态,即客户端已经没有要发送的数据了,但服务端若发送数据,则客户端仍要接收。

第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。

第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。


计算机网络基础

2.SYN的攻击原理

        服务端在收到SYN信号后会将ACK信号和新的SYN信号返回给客户端,并将该连接计入半连接队列数目中,当半连接数目大于系统设定的最大值(/proc/sys/net/ipv4/tcp_max_syn_backlog)时系统将不能再接收其他的连接,所以攻击者利用这个原理,在服务器向客户端发送SYN和ACK信号后不做任何回应,这样链接将一直不会被释放,直到累计到链接最大值而不能再创建新的链接,从而达到了让服务器无法响应正常请求的目的。

解决方法
       使syncookies生效,将/proc/sys/net/ipv4/tcp_syncookies值置改为1即可,这样即使是半连接队列syn queue已经满了,也可以接收正常的非恶意攻击的客户端的请求,但是这种方法只在无计可施的情况下使用

 

3.TCP链接需要三次握手,两次不可以么,为什么?

  为了防止 已失效的链接请求报文突然又传送到了服务端,因而产生错误。

  客户端发出的连接请求报文并未丢失,而是在某个网络节点长时间滞留了,以致延误到链接释放以后的某个时间才到达Server。这时,Server误以为这是Client发出的一个新的链接请求,于是就向客户端发送确认数据包,同意建立链接。若不采用“三次握手”,那么只要Server发出确认数据包,新的链接就建立了。由于client此时并未发出建立链接的请求,所以其不会理睬Server的确认,也不与Server通信;而这时Server一直在等待Client的请求,这样Server就白白浪费了一定的资源。若采用“三次握手”,在这种情况下,由于Server端没有收到来自客户端的确认,则就会知道Client并没有要求建立请求,就不会建立链接。


4.UDP与TCP的区别

UDP协议和TCP协议都是**传输层**协议
(1) TCP面向连接;UDP是无连接的,即发送数据之前不需要建立连接
(2) TCP传输可靠;UDP不可靠
(3) TCP首部开销20字节;UDP的首部开销8个字节
(4) TCP面向字节流;UDP是面向数据报;
(5) 每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
(6) TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。

 

5.TCP的的头部是什么样的

如下图示,就是TCP包的头部结构。可以看到这个头部最少有4x5=20个字节。


计算机网络基础


源端口号和目的端口号:再加上Ip首部的源IP地址和目的IP地址可以唯一确定一个TCP连接
数据序号:表示在这个报文段中的第一个数据字节序号
确认序号:仅当ACK标志为1时有效。确认号表示期望收到的下一个字节的序号(这个下面再详细分析)
偏移:就是头部长度,有4位,跟IP头部一样,以4字节为单位。最大是60个字节
保留位:6位,必须为0
6个标志位:
URG-紧急指针有效
ACK-确认序号有效
PSH-接收方应尽快将这个报文交给应用层
RST-连接重置
SYN-同步序号用来发起一个连接
FIN-终止一个连接

窗口字段:16位,代表的是窗口的字节容量,也就是TCP的标准窗口最大为2^16 - 1 = 65535个字节(这个下面再详细分析)

校验和:源机器基于数据内容计算一个数值,收信息机要与源机器数值 结果完全一样,从而证明数据的有效性。检验和覆盖了整个的TCP报文段:这是一个强制性的字段,一定是由发送端计算和存储,并由接收端进行验证的。

紧急指针:是一个正偏移量,与序号字段中的值相加表示紧急数据最后一个字节的序号。TCP的紧急方式是发送端向另一端发送紧急数据的一种方式
选项与填充(必须为4字节整数倍,不够补0):
最常见的可选字段的最长报文大小MSS(Maximum Segment Size),每个连接方通常都在一个报文段中指明这个选项。它指明本端所能接收的最大长度的报文段。
该选项如果不设置,默认为536(20+20+536=576字节的IP数据报)

 

6.HTTP和HTTPS的区别,HTTP是哪层?

一、传输信息安全性不同
(1)http协议:是超文本传输协议,信息是明文传输。如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接百读懂其中的信息。
(2)https协议度:是具有安全性的ssl加密传输协议,为浏览器和服务器之间的通信加密,确保数据传输的安全。
二、资源消耗不同
  和HTTP通信相比,Https通信会由于加减密处理消耗更多的CPU和内存资源。
三、端口不同
(1)http协议:使用的端口是80。
(2)https协议:使用的端口是443.
四、证书申请方式不同
(1)http协议:免费申请。
(2)https协议:需要到ca申请证书,一般免费证书很少,需要交费。

HTTP协议是属于**应用层**协议

 

7.DNS服务

DNS服务是域名系统的缩写, 英文全称:Domain Name System,是将域名与IP对应的网络服务,让用户在访问网站时,不再需要输入冗长难记的IP地址,只需输入域名即可访问,因为DNS服务会自动将域名转换成正确的IP地址。

 

8.从输入网址到返回页面经历了哪些过程?详细问了的DNS寻址过程

1)输入网址;
2)发送到DNS服务器,并获取域名对应的web服务器对应的ip地址;
3)与web服务器建立TCP连接;
4)浏览器向web服务器发送http请求;
5)web服务器响应请求,并返回指定url的数据(或错误信息,或重定向的新的url地址);
6)浏览器下载web服务器返回的数据及解析html源文件;
7)生成DOM树,解析css和js,渲染页面,直至显示完成;

 

9.ipv6与ipv4的区别


(1)ipv6的地址空间更大,地址长度为128,而ipv4地址长度为32;
(2) iPv4使用地址解析通讯协议(ARP),iPv6使用多点传播邻域请求消息取代地址解析通讯协议 (ARP);
(3)ipv6路由表更小,提高了路由器转发数据包的速度;
(4)ipv6加入了对自动配置的支持;
(5)ipv6安全性更高

 

10.GETPOST的区别及应用场景

GET:从指定的资源请求数据

POST:向指定的资源提交要被处理的数据

 

GET

POST

后退按钮/刷新

无害

数据会被重新提交

缓存

能被缓存

不能缓存

编码方式

只能进行url编码

支持多种编码方式

是否保留在浏览历史

参数保留在浏览器历史中

不保留

对数据长度的限制

发送数据,GET方法向URL添加数据,但URL的长度是受限制的

无限制

对数据类型的限制

只允许ASCII字符

无限制。也允许二进制数据

安全性

安全性较差,因为参数直接暴露在url中

参数不会保存在浏览器历史或web服务器日志中

可见性

数据在url中,所有人可见

不可见

传参方式

通过url传递

放在request body中

 

11.五层网络模型以及每层的协议

计算机网络基础

物理层:

确保数据可以在各种物理媒介上进行传输,为数据的传输提供可靠的环境。

数据链路层:

负责将网络层交下来的 IP 数据报封装成帧,并在链路的两个相邻节点间传送帧,每一帧都包含数据和必要的控制信息。以太网协议

计算机网络基础

网络层:

为两台主机提供通信服务,并通过选择合适的路由将数据传递到目标主机。

IP协议

ARP协议

传输层:

为两台主机中的进程提供通信服务。

传输控制协议 (TCP):提供面向连接的、可靠的数据传输服务,数据传输的基本单位是报文段;

用户数据报协议(UDP):提供无连接的、尽最大努力的数据传输服务,但不保证数据传输的可靠性,数据传输的基本单位是用户数据报。

应用层:

应用层协议定义的是应用进程间通讯和交互的规则,不同的应用有着不同的应用层协议,如 HTTP协议(万维网服务)、FTP协议(文件传输)、SMTP协议(电子邮件)、DNS(域名查询)等

 

12.TCP与UDP的协议有哪些

(1)运行于TCP协议之上的协议:

HTTP协议:超文本传输协议,用于普通浏览

HTTPS协议:安全超文本传输协议,身披SSL外衣的HTTP协议

FTP协议:文件传输协议,用于文件传输

POP3协议:邮局协议,收邮件使用

SMTP协议:简单邮件传输协议,用来发送电子邮件

Telent协议:远程登陆协议,通过一个终端登陆到网络

SSH协议:安全外壳协议,用于加密安全登陆,替代安全性差的Telent协议

(2)运行于UDP协议之上的协议:

DHCP协议:动态主机配置协议,动态配置IP地址

NTP协议:网络时间协议,用于网络时间同步

BOOTP协议:引导程序协议,DHCP协议的前身,用于无盘工作站从中心服务器上获取IP地址

 

13.HTTP响应状态码

HTTP状态码分类
计算机网络基础
1XX状态码列表:
计算机网络基础
2XX状态码列表:
计算机网络基础
3XX状态码列表:
计算机网络基础
4XX状态码列表:
计算机网络基础
计算机网络基础
5XX状态码列表:
计算机网络基础

13.对称加密与非对称加密

14.IP地址与MAC地址的区别