计算机网络基础知识
TCP和UDP的区别?
答:TCP:面向连接的服务,向目的地确保传递和流量控制。将报文划分为短报文,提供拥塞控制。只能点对点(一对一)连接。
UDP:无连接服务,不提供不必要的服务。没有可靠性,无流量控制,无拥塞控制。可以一对一/多,多对一/多。
介绍一下TCP/IP模型
答:TCP/IP四层协议:
应用层:各种协议,如Telnet,HTTP,FTP,SMTP,DNS,RTP等
运输层:TCP、UDP
网络层:IP、ARP
网络接口层:网络接口1…
注意:FTP、HTTP是建立在TCP之上的应用层协议;DNS是简历在UDP之上的应用层协议。
TCP的三次握手?四次挥手?
答:三次握手建立连接:
1.客户端向服务端发送带SYN标志,并生成一个随机值X;
2.服务端回复一个SYN-ACK标志,并将设置为X+1,同时生成另一个随机值Y;
3.客户端回复ACK,同时设置为Y+1。
四次挥手断开连接:
1.客户端向服务端发送FIN信号,并进入FIN_WAIT_1状态。
2.服务端回复ACK信号。
3.客户端进入FIN_WAIT_2状态。等待一段时间。
4.服务端继续发送FIN信号。
5.客户端进入TIME_WAIT状态。一段时间后连接关闭。
HTTP的长连接和短链接?是否为无状态?
答:HTTP是无状态的,即HTTP服务器不保存任何客户相关的信息。
HTTP/1.0默认使用短链接,即客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。
HTTP/1.1起,默认使用长连接,用以保持连接特性。
HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。
Cookie和Session
答:HTTP是无状态的,通过使用Cookie实现状态管理。
Cookie:通过在请求和响应报文中写入Cookie信息来控制客户端状态。
根据从服务端发送的响应报文内的Set-Cookie的首部字段,通知客户端保存Cookie。下次客户端再次向服务端发出请求时,客户端会自动在请求报文中添加Cookie值。Cookie具有不可跨域名性。
Session:在用户第一次访问服务器的时候自动创建。**相当于在服务器端建立用户列表,客户进行访问时,每次从用户列表中进行查询。**为防止内存溢出,服务器会把长时间内没有活跃的Session从内存删除。这个时间就是Session的超时时间。超出时间Session无效。
总结:Cookie在客户端记录用户信息,所以不是很安全,可以通过本地存储的Cookie进行欺骗;Session在服务端记录用户信息。
HTTP报文格式
请求报文:第一行为请求行;后面的为首部行。
请求行:请求方法 URL HTTP版本号
首部行:首部字段:值
如:Host(指明对象所在主机) ,User-anget(指明用户代理),Accept-language(指明希望得到的语言版本)等等。
空行
实体主体
响应报文:状态行:HTTP版本号 状态码 短语
首部行:首部字段:值
空行
实体
HTTP常用状态码
答:
状态码 | 短语 | 描述 |
---|---|---|
200 | OK | 请求成功 |
301 | Moved Permanently | 请求的对象已被永久转移 |
400 | Bad Request | 请求不能被服务器理解 |
404 | Not Found | 被请求的文档不在服务器中 |
505 | HTTP Version Not Supposted | 服务器不支持请求报文使用的HTTP协议版本 |
HTTP和HTTPS区别
答:HTTP:未经加密的协议,明文传输,不安全。
HTTPS:HTTP+TLS/SSL。安全的协议,通过密钥交换算法-签名算法-对称加密算法-摘要算法实现安全传输。
HTTPS的过程?TLS/SSL过程
答:HTTPS默认端口号443(HTTP默认端口号80),其余与HTTP相同。
TLS是SSL的升级版本,均是用于互联网中两台计算机之间的身份验证和加密的一种协议。
进行通信前,先进行HTTP通信,即利用TCP进行三次握手,建立连接;然后是TLS/SSL握手阶段,完成身份验证、加密等过程。
浏览器解析一个请求的过程?如输入"www.baidu.com"回车后的过程
答:
1、浏览器(客户端)向DNS服务器发出解析域名的请求;
2、DNS服务器将域名解析为对应的IP地址,并返回给客户端;
3、 浏览器与服务器建立TCP连接(默认端口为80);
4、浏览器发出HTTP请求报文;
5、服务器回复HTTP响应报文;
6、浏览器解析响应报文,并 显示在Web页上;
7、收发报文结束, 释放TCP连接。
HTTP的请求POST和GET有什么区别?
答:GET:**用于请求服务器返回资源。不安全,**请求参数直接在URL后,容易被窃取。
POST:**用于表单提交,相当于把信息交给服务器,等待服务器做出响应。安全,**请求参数放在请求体中,对用户不可见。
GET | POST |
---|---|
url有长度限制 | 没有限制 |
请求会被浏览器主动cache | 不会 |
在浏览器中前进/后退无害 | 需要重新提交表单 |