5.面试总结分享之 —计算机网络
5.网络
1.网络基础
1.TCP和UDP的区别
-
TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接。
-
TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付。
-
Tcp通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。
-
UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。
-
每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信。
-
TCP对系统资源要求较多,UDP对系统资源要求较少。
2.tcp 为什么要三次握手,两次不行吗?为什么?
为了实现可靠数据传输, TCP 协议的通信双方, 都必须维护一个***, 以标识发送出去的数据包中, 哪些是已经被对方收到的。 三次握手的过程即是通信双方相互告知***起始值, 并确认对方已经收到了***起始值的必经步骤。如果只是两次握手, 至多只有连接发起方的起始***能被确认, 另一方选择的***则得不到确认。
3.get 和 post 请求有哪些区别?
- GET在浏览器回退时是无害的,而POST会再次提交请求。
- GET产生的URL地址可以被Bookmark,而POST不可以。
- GET请求会被浏览器主动cache,而POST不会,除非手动设置。
- GET请求只能进行url编码,而POST支持多种编码方式。
- GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
- GET请求在URL中传送的参数是有长度限制的,而POST么有。
- 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
- GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
- GET参数通过URL传递,POST放在Request body中。
4.http和https的区别
http协议是无状态的明文传输,Https而SSL+HTTP协议构建的可进行加密传输。https的服务器必须向CA申请一个证明服务器用途的证书,而客户端通过该证书确认服务器,所以银行都是https,所有的通讯都是在**加密的情况下,而**则是通过证书交换,所以第三方拦截的数据没有**也没有用。SSL用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取及窃听。
5.TCP的拥塞处理是怎么样的?
拥塞控制就是防止过多的数据注入网络,造成网络堵塞,拥塞控制和流量控制不同,拥塞控制是一个全局性过程,而流量控制是点对点通信的控制,拥塞控制的方法主要有以下5种:
-
拥塞窗口:动态窗口,和网络拥塞程度有关,网络拥塞程度大,拥塞窗口就小
-
慢启动:不要一开始就发送大量数据,先探测一下网络的拥塞程度,也就是说从小到大逐渐增加拥塞窗口的大小
-
拥塞避免(AMDI:加法增大乘法减小):让拥塞窗口缓慢增大,每经过一个往返时间就将拥塞窗口+1,缓慢增大拥塞窗口
-
快重传:发送方只要一收到三个重复的确认就应该立即重传对方并未收到的报文段,而不必继续等待重传计时器到达重传时间,快重传并不是取消重传计时器,而是在某些情况下更早的重传丢失的报文
-
快恢复:根据收到的重复的ACK的多少调节慢开始门限值ssthresh
6.从输入网址到获得页面的过程是如何的?
- 浏览器查询DNS,获得域名对应的IP地址
- 先从浏览器缓存找ip,因为浏览器会缓存DNS记录一段时间
- 如果没有找到,再从Host文件查找是否有该域名对应的IP
- 如果没有找到,再从路由器缓存找
- 如果没有找到,再从DNS缓存找
- 如果都没有找到,就从浏览器域名服务器向根域名服务器查找,没有找到就继续迭代,知道找到为止
- 浏览器获得IP地址后,浏览器向服务器请求连接,发起三次握手
- 连接建立起来后,浏览器向服务器发送http请求
- 服务器接收到这个请求,并根据路径参数映射到特定的请求处理器进行处理,并将视图以及相应的结果返回给浏览器
- 浏览器解析并渲染视图,若遇到对js,css文件以及静态图片资源的引用,重复上述步骤向服务器请求资源
- 浏览器根据请求到的资源,数据渲染页面,最终向用户呈现
7.TCP和UDP分别对应的常见的应用层协议
- TCP对应的应用层协议
- FTP:文件传输协议,21端口
- Telnet:远程登陆协议,23端口
- SMTP:简单邮件传送协议,25端口
- POP3:和SMTP对应,POP3用于接收邮件,110端口
- HTTP:超文本传输协议,80端口
- UDP对应的应用层协议
- DNS:域名解析协议,53端口
- SNMP:简单网络管理协议,161端口
- TFTP:简单文件传输协议,69端口
8.http报文格式
一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成,下图给出了请求报文的一般格式。
典型的常用请求头有:
- User-Agent:产生请求的客户端类型。
- Accept:客户端可识别的内容类型列表。
- Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机。
- Accept-Encoding: 客户端使用的编码环境和编码方式
- Accept-Language: 客户端语言环境
- Authorization:授权信息,一般用于存放授权之后的信息Connection:表示是否需要持久连接Content-Length:表示请求数据正文的长度
- Cookie:这个与服务器端做交互的,存储保持会话的重要信息
- Referer:表示该次请求的来源,一般用于做防盗链HTTP 请求方法概述:
- GET: 请求读取由URL所标识的信息
- POST: 给服务器发送数据
- HEAD: 请求读取由URL所有标识的信息的首部
- PUT: 在指明的URL下存储一个文档OPTION: 请求一些选项的信息
- DELETE: 删除指明的URL所标识的资源
- TRACE: 用来进行环回测试的请求报文
- CONNECT: 用于代理服务器