1. http是7层协议哪层
应用层
2. tcp、udp区别及使用场景
- TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接。
- TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付。TCP通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。
- UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。
- 每一条TCP连接只能是点到点的;UDP支持一对一、一对多、多对一和多对多的交互通信。
- TCP对系统资源要求较多,UDP对系统资源要求较少。
3. http、https区别
- HTTP 默认工作在 TCP 协议 80 端口,HTTPS 默认工作在 TCP 协议443端口。
- HTTPS 协议需要到 CA (Certificate Authority,证书颁发机构)申请证书,一般免费证书较少,因而需要一定费用。
- HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议。
- HTTP 的连接很简单,是无状态的。HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。(无状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息。)
4. tcp长连接短连接的区别
【todo】
5. https加密
【todo】
6. tcp三次握手和四次挥手
-
三次握手
- 如果只进行两次握手:
假设client发出的第一个连接请求报文段,因为网络延迟,在连接释放以后的某个时间才到达server 。
本来这是一个早已失效的连接请求,但server收到此失效的请求后,误认为是client再次发出的一个新的连接请求。
于是server就向client发出确认报文段,同意建立连接。
如果不采用“3次握手”,那么只要server发出确认,新的连接就建立了 。
由于现在client并没有真正想连接服务器的意愿,因此不会理睬server的确认,也不会向server发送数据。
但server却以为新的连接已经建立,并一直等待client发来数据,这样,server的很多资源就白白浪费掉了
采用“三次握手”的办法可以防止上述现象发生 ,例如上述情况,client没有向server的确认发出确认,server由于收不到确认,就知道client并没有要求建立连接。
-
四次挥手
- 为什么TIME_WAIT状态需要经过2MSL才能进入CLOSE状态?
答:MSL指的是报文在网络中最大生存时间。在客户端发送对服务端的FIN确认包ACK后,这个ACK包有可能到达不了,服务器端如果接收不到ACK包就会重新发送FIN包。所以客户端发送ACK后需要留出2MSL时间(ACK到达服务器器+服务器发送FIN重传包,一来一回)等待确认服务器端缺失收到了ACK包。也就是说客户端如果等待2MSL时间也没收到服务器端重传的FIN包,则就可以确认服务器已经收到客户端发送的ACK包
【todo】
7. http头结构
-
http请求
- 请求行包括请求方法、URL字段、http版本
- 消息报头由一系列的健值对组成,允许客户端向服务器端发送一些附加信息或者客户端自身的信息,主要包括
-
http响应
- 响应状态行包括http版本、状态码、以及状态码对应的文本描述。
8. get和post的区别
- 功能不同。get是从服务器上获取资源。post是向服务器提交数据。
- get参数有长度限制(受限于url长度,具体的数值取决于浏览器和服务器的限制),而post无限制。
- get请求的数据会附加在url之 ,以 " ? "分割url和传输数据,多个参数用 "&"连接,而post请求会把请求的数据放在http请求体中。
- get和post在本质上都是tcp链接,但由于http协议和浏览器或者服务器的限制,从而使它们在应用过程中产生了差别,但是它们中还有一个较大的区别:get在请求时发送一个数据包,会将header和data一起发送过去,而post会产生两个数据包先发送header,服务器返回100,然后在发送data,服务器返回200。
- get方法是安全、幂等、可缓存的,get方法的报文主体没有任何语义。post不安全,不幂等,不可缓存(大部分情况下)。
9. 计算机网络的七层协议,每层的作用
【todo放link】见其他文章
10. tcp/udp作用
【todo放link】见其他文章
11. 从浏览器输入url到显示出结果的全过程,涉及哪些层哪些协议,越详细越好。分为https和http两种
【todo放link】见其他文章
12. 路由协议
【todo】DNS吗?
13. TCP协议所在层级
【todo放link】见其他文章
14. ICMP、IGMP
【todo 似乎很眼熟,但是是啥来着。。】
15. 用户登陆的session管理
【todo】
16. TCP可靠性保障
【todo】
17. https中的ssl协议原理
【todo】
18. ARP协议
【todo】
19. IP中涉及到哪些协议
【todo】
20. TCP三次握手每一步丢失会有什么后果
【todo】
21. CA证书的请求过程
【todo】
22. 对称加密和非对称加密的区别
【todo】
23. tcp头部字段
- 16位源端口号加上16位目的端口号
- 32位序列号,当前分段的数据块的第一个字节在整个文件中的位置。
- 32位确认序号,用来标识所期望收到的下一个序列号。
- 4位的首部长度
- 6位的保留字段
- 6比特的标识字段。
- 16位的接受窗口字段,指示接收方愿意接受的字节数量,用于流量控制。
- 16位校验和。
- 16位紧急数据指针,为紧急数据的最后一个字节。
24. tcp拥塞控制算法
【todo】
25. cookie和session
【todo】
26. https端口号
在tcp协议443端口,见第3题
27. DNS为什么用到UDP
【todo】
28. http响应状态码
【todo】
29. ping网址用到的协议
【todo】
30. 如果本地和服务器没有连接上,怎么排查
【todo】
31. 怎么用udp实现可靠连接
【todo】
32. tcp/udp也会存在发送、接收速度不匹配的问题,底层怎么解决的
【todo】
33. socket在哪个层
【todo】
34. tcp/ip五层模型
【todo】