计算机网络

计算机网络:

1、在浏览器中输入一个网址到显示出界面,中间经历了什么?

1、域名解析:
首先会去本机/ect/hosts文件夹去找是否有对应的域名映射,如果有,就会返回映射的地址,就比如咱们在输入localhost的时候,显示的界面就是由本机映射127.0.0.1的。如果没有在本机上找到,浏览器就会发送一个DNS请求到本地DNS服务器找对应的IP地址,一般由网络接入服务商提供,如果在本地DNS服务器上没有找到,不能回答该请求,则此域名服务器就暂成了另一个客户,向根域名服务器发送请求解析。

2、TCP三次握手:
解析出IP地址后,浏览器根据IP地址和默认端口号443向服务器发送请求,建立TCP连接,经历三次握手:
1、服务器开始处于监听状态,此时客户端将向服务端发送请求,首先随机化一个数字作为自己的序列号,并将SYN位置为1,向服务端发送请求,此报文不携带数据。此时客户端处于SYN_SEND状态,
2、服务端收到客户端发送的SYN报文,也将一个随机数作为自己的序列号,并且将客户端 的序列号+1作为应答号,将ACK、SYN位置为1,发送给客户端。此报文不携带数据。此时服务端处于SYN_RCVD状态
3、客户端收到服务端发来的报文,将服务端的序列号+1作为应答号,并将ACK位置为1,发送给服务端,此时报文可以携带数据。

3、 HTTP请求
建立好TCP连接后,浏览器通过http协议向服务端发送发送请求,请求数据包,服务端处理请求,返回数据给浏览器

4、TCP四次挥手
浏览器和服务端传输数据完毕,现在浏览器向服务端发送断开请求,TCP断开四次挥手:
1、浏览器将发送断开请求,发送FIN报文,将FIN位置为1,这时浏览器进入FIN_WAIT1状态。
2、服务端收到请求后,返回FIN报文,将FIN位置为1.
3、客户端收到服务端返回的FIN报文,状态变为FIN_WAIT 2状态。
4、服务端处理完数据,返回ACK报文,表示即将关闭连接。
5、客户端收到ACK报文,也返回ACK应答报文,进入TIME_WAIT状态,等待2MSL时间后,关闭连接
6、服务端一收到浏览器的ACK报文,直接关闭连接。

2、TCP和UDP的区别:

两者都是传输层的协议
TCP:传输控制协议:面向连接、点对点、可靠传输、面向字节流
UDP:用户数据包协议:面向不连接,可以一对一也可以一对多,面向数据报文,尽最大努力交付,不可靠。

3、TCP如何保证可靠传输:

校验和、重传控制、序号标识、滑动窗口、确认应答实现可靠传输
1、校验和:在发送方发送前,先计算校验和,再进行校验和填充。接收方在收到消息后,以同样的方式计算校验和,检查是否和发送方一致
2、确认应答和序列号:
序列号(SYN):TCP传输时报文头部都有一个序列号,对传输的数据报文进行编号,保证发送的顺序,如果前后接收到额序列号不是连续的,就说明接收的报文有误。
确认应答号(ACK):同样的,在TCP报文头部有带一个确认号,TCP传输的过程,每次接收方收到数据后,都会对传输方进行确认应答,也就是发送ACK报文。
序列号不仅仅是应答的作用,有了序列号之后就能够对传输的数据进行排序,并且去掉重复的数据,这也是可靠性的保证。
3、超时重传: 在TCP传输过程中,发送方在发送完数据后等待一段时间,如果这段时间过去了还没有收到ACK报文,那么就对刚发送的数据进行重新发送,如果发现发送的数据已经存在了,那么直接丢弃,仍然发送ACK报文。
4、连接管理: TCP三次握手、四次挥手。(前提)
5、流量控制:接收端在收到数据后,会对收到的数据进行处理,如果发送端发送的速度太快,很快就会把缓冲区填满,直到发生丢包的错误,接下来就是一系列超时重传什么的连锁反应,而TCP会根据接收端的接收能力,决定发送端的速度。这个机制就是流量控制。
在TCP协议报头信息中,有一个16字段的窗口大小,这个窗口大小实际上是接收端缓冲区的大小,这个数字越大说明缓冲区越大,网络的吞吐量就越大,接收端会在确认应答发送ACK报文时,将自己的缓冲区大小填入,并随着ACK报文一起发送过去,发送方就会根据窗口大小改变自己的发送速度,如果窗口大小为0,就会暂停发送,并定期向接收端发送探测数据段,知道接收端的窗口大小。
6、拥塞控制:在TCP传输的过程中,若一开始发送端就发送大量的数据,就可能造成一些问题,如果在网络和拥塞的时候发送大量数据,就会造成网络更加拥堵,可能就会造成大量的丢包,严重影响性能。
于是TCP采用了一个慢启动的机制,在刚开始发送数据时,只发送少量的数据探路,再决定多大的速度传输数据,这时引入拥塞窗口的概念,发送刚开始拥塞窗口大小设为1,每当收到一次ACK报文,拥塞窗口大小就+1,在发送数据之前,首先将拥塞窗口和接收端窗口大小比较,取小的一方作为实际发送窗口。
拥塞窗口的增长速度是指数级别的。慢开始只是刚开始时发送慢,发送少,但增长速度很快,为了控制增长速度,设置一个阈值,当拥塞窗口大小大于阈值时,指数增长速度就会变为线性增长速度。慢启动刚开始时,阈值等于窗口的最大值,一旦发生网络拥堵,发生超时重传,慢启动阈值就变为原来的一半,同时拥塞窗口大小设置为1

4、说一说HTTP和HTTPS协议

HTTP是超文本协议
基于TCP/IP 协议、用于B/S架构、默认工作TCP协议80端口。
HTTP协议以明文形式发送报文内容,不提供任何形式的加密,如果攻击者截取了web服务器和网站服务器之间的传输报文,就可以直接读取其中的信息,所以HTTP不适合传输一些敏感信息,比如银行密码之类。

HTTPS是超文本传输安全协议:能够对传输的信息进行加密
HTTPS加密过程:
基于HTTP进行传输,使用SSL/TSL进行加密数据包
其中就有对称加密和非对称加密,简洁来说,对称加密时加密和解密都使用同一把钥匙,那么在加密的时候就需要把密钥传输给对方,密钥的安全性得不到保证。
非对称加密就是加密和解密使用不同的密钥,加密使用公钥,解密使用私钥。发送端使用接收端发来的公钥对信息进行加密,接收端使用私钥对信息进行解密。
HTTPS加密过程如下:
1、服务器把自己的公钥登录到数字证书认证机构。
2、数字认证机构使用自己的私钥向服务器的公钥签署数字签名并颁发公钥证书,
3、客户端拿到服务器的公钥证书后,使用数字签名机构的公开密钥,向数字证书机构验证公钥证书的数字签名,以确认是服务器的公钥。
4、使用服务器的公钥对信息进行加密并发送。
5、服务端使用自己的私钥对信息进行解密。

HTTP和HTTPS的区别:
HTTP是80端口,HTTPS是443端口。
HTTP比HTTPS要响应快,因为HTTP只需要三次握手传输3个包,而HTTPS需要加上SSL握手的9个包一共12个包。

5、说一说了解的状态码

1XX :表示请求已接收,继续处理
2XX:表示请求已经成功接收、理解。 200就是客户端接收成功
3XX:表示请求被重定向。301永久性重定向。 302临时性重定向
4XX:客户端错误。400:请求有语法错误无法实现。404:服务器上找不到请求的资源。403:请求被服务器拒绝。
5XX:服务器错误。服务器未能实现合法的请求。500:服务器在执行请求时发生了错误。503:服务器超负载或停机维护,无法处理请求。

6、TCP三次握手、四次挥手

TCP三次握手:
一开始,服务端和客户端都处于CLOSE状态,先是服务端主动监听某个端口,此时服务端处于监听状态。
接着客户端会随机初始化序列号,并将SYN位置为1,把SYN报文发送给服务端,表示发起连接请求,此次报文不能携带数据。此时客户端处于SYN_SEND状态。
服务端接收到客户端发送的SYN报文,也随机化序列号,并且把客户端发来的报文中的序列号+1作为应答号,并将自己的SYN和ACK位都置为1,接着发送给客户端,此时服务端处于SYN_RCVD状态。此报文也不包含数据。
客户端收到服务端发来的报文,将ACK位置为1,并将服务端报文的序列号+1作为应答号,然后发送给服务端。此报文可以携带数据。接着两方都变成ESTABLISHED状态,可以开始传输数据。

为什么要三次握手而不是2次?

1、防止旧的重复连接初始化造成混乱。
2、三次握手可以同步双方都初始序列号。
3、三次握手可以避免资源浪费。

TCP四次挥手:TCP在断开连接时会进行四次挥手。
客户端打算关闭连接,此时会发送一个TCP首部FIN标志位为1的报文,即FIN报文,此时客户端处于FIN_WAIT1状态。
服务端收到客户端发来的FIN报文,就向客户端发送ACK应答报文,然后处于CLOSE_WAIT状态。
客户端收到服务端的ACK应答报文后,进入到FIN_WAIT2状态。
服务端处理完数据,向客户端发送FIN报文,之后服务端进入LAST_ACK状态。
客户端收到服务端的FIN报文,发送ACK应答报文,然后进入TIME_WAIT状态。
服务端收到ACK报文后,进入CLOSE状态。
客户端在2MSL个时间后,也进入CLOSE状态。两边正式断开连接

只有主动发起关闭的一方才会有TIME_WAIT 状态。

为什么客户端要等待2MSL个时间?

MSL是指报文在网络中存活的最大时间,超过这个时间就会被丢弃。
TIME_WAIT 等待2倍MSL 时间是因为:网络中可能存在来自发送方的数据包,当这些数据包被接收方接收后,又会发送回应报文,所以一来一回需要2个MSL时间。

为什么需要TIME_WAIT状态?

1、防止有相同的四元组的旧的数据包被收到。
2、帮助“被动关闭方”能够正常关闭。即能保证最后的ACK报文能被对方收到从而关闭。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

且-听风吟.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值