网络分层结构
计算机网络体系大致分为三种,OSI七层模型、TCP/IP四层模型和五层模型。一般面试的时候考察比较多的是五层模型。
TCP/IP五层模型:应用层、传输层、网络层、数据链路层、物理层。
- 应用层:为应用程序提供交互服务。在互联网中的应用层协议很多,如域名系统DNS、HTTP协议、SMTP协议等。
- 传输层:负责向两台主机进程之间的通信提供数据传输服务。传输层的协议主要有传输控制协议TCP和用户数据协议UDP。
- 网络层:选择合适的路由和交换结点,确保数据及时传送。主要包括IP协议。
- 数据链路层:在两个相邻节点之间传送数据时,数据链路层将网络层交下来的 IP 数据报组装成帧,在两个相邻节点间的链路上传送帧。
- 物理层:实现相邻节点间比特流的透明传输,尽可能屏蔽传输介质和物理设备的差异。
TCP有哪些特点?
- TCP是面向连接的传输层协议。
- 每一条TCP连接只能有两个端点。
- TCP提供可靠交付的服务。
- TCP提供全双工通信。
- 面向字节流。
TCP和UDP的区别?
- TCP面向连接;UDP是无连接的,即发送数据之前不需要建立连接。
- TCP提供可靠的服务;UDP不保证可靠交付。
- TCP面向字节流,把数据看成一连串无结构的字节流;UDP是面向报文的。
- TCP有拥塞控制;UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如实时视频会议等)。
- 每一条TCP连接只能是一对一的;UDP支持一对一、一对多、多对一和多对多的通信方式。
- TCP首部开销20字节;UDP的首部开销小,只有8个字节。
HTTP协议的特点?
- HTTP允许传输任意类型的数据。传输的类型由Content-Type加以标记。
- 无状态。对于客户端每次发送的请求,服务器都认为是一个新的请求,上一次会话和下一次会话之间没有联系。
- 支持客户端/服务器模式。
HTTP报文格式
HTTP请求由请求行、请求头部、空行和请求体四个部分组成。
- 请求行:包括请求方法,访问的资源URL,使用的HTTP版本。
GET
和POST
是最常见的HTTP方法,除此以外还包括DELETE、HEAD、OPTIONS、PUT、TRACE
。 - 请求头:格式为“属性名:属性值”,服务端根据请求头获取客户端的信息,主要有
cookie、host、connection、accept-language、accept-encoding、user-agent
。 - 请求体:用户的请求数据如用户名,密码等。
HTTP响应也由四个部分组成,分别是:状态行、响应头、空行和响应体。
- 状态行:协议版本,状态码及状态描述。
- 响应头:响应头字段主要有
connection、content-type、content-encoding、content-length、set-cookie、Last-Modified,、Cache-Control、Expires
。 - 响应体:服务器返回给客户端的内容。
POST和GET的区别?
- GET请求参数通过URL传递,POST的参数放在请求体中。
- GET产生一个TCP数据包;POST产生两个TCP数据包。对于GET方式的请求,浏览器会把请求头和请求体一并发送出去;而对于POST,浏览器先发送请求头,服务器响应100 continue,浏览器再发送请求体。
- GET请求会被浏览器主动缓存,而POST不会,除非手动设置。
- GET请求只能进行url编码,而POST支持多种编码方式。
- GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
HTTP长连接和短连接?
HTTP1.0默认使用的是短连接。浏览器和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。
HTTP/1.1起,默认使用长连接。要使用长连接,客户端和服务器的HTTP首部的Connection都要设置为keep-alive,才能支持长连接。
HTTP长连接,指的是复用TCP连接。多个HTTP请求可以复用同一个TCP连接,这就节省了TCP连接建立和断开的消耗。
DNS 的解析过程?
- 浏览器搜索自己的DNS缓存
- 若没有,则搜索操作系统中的DNS缓存和hosts文件
- 若没有,则操作系统将域名发送至本地域名服务器,本地域名服务器查询自己的DNS缓存,查找成功则返回结果,否则依次向根域名服务器、顶级域名服务器、权威域名服务器发起查询请求,最终返回IP地址给本地域名服务器
- 本地域名服务器将得到的IP地址返回给操作系统,同时自己也将IP地址缓存起来
- 操作系统将 IP 地址返回给浏览器,同时自己也将IP地址缓存起来
- 浏览器得到域名对应的IP地址
Cookie和Session的区别?
- 作用范围不同,Cookie 保存在客户端,Session 保存在服务器端。
- 有效期不同,Cookie 可设置为长时间保持,比如我们经常使用的默认登录功能,Session 一般失效时间较短,客户端关闭或者 Session 超时都会失效。
- 隐私策略不同,Cookie 存储在客户端,容易被窃取;Session 存储在服务端,安全性相对 Cookie 要好一些。
- 存储大小不同, 单个 Cookie 保存的数据不能超过 4K;对于 Session 来说存储没有上限,但出于对服务器的性能考虑,Session 内不要存放过多的数据,并且需要设置 Session 删除机制。
了解网络编程协议吗?客户端发送给服务器的请求,怎么确定具体的协议?
了解,客户端发送给服务器端的请求,可以根据统一资源定位系统(uniform resource locator,URL)来确定具体使用的协议。
补充
一个完整的URL包括–协议部分、网址、文件地址部分。协议部分以//为分隔符,在interner中,我们可以使用多种协议:
HTTP——HyperText Transfer Protocol(超文本传输协议)
FTP——File Transfer Protocol(文件传输协议)
Gopher——The Internet Gopher Protocol(网际Gopher协议)
File——本地文件传输协议
HTTPS——安全套接字层超文本传输协议(http的安全版)
例如百度网址:https://baidu.com,可以看出使用的是https协议。
IP协议包含哪些字段?
IP所包含字段结构图如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lNPVnJ8D-1676378262071)(
)]
IP协议包含字段如下:
**4位版本号:**指定IP协议的版本,对于IPv4来说就是4
**4位头部长度:**IP头部长度有多少个4字节,所以头部最大长度就是15*4=60字节
**8位服务类型:**3位优先权(已弃用),4位TOS字段,1位保留字段(必须设置为0)。4为TOS为:最小延时,最大吞吐量,最高可靠性,最小成本,这四个只能选择一个
**16位总长度:**IP数据报整体占多少字节
**16为标识:**唯一的标识主机发送的报文,IP报文在数据链路层被分片,那么每一个片中的标识都是相同的
**3位标志字段:**第一位保留,第二位置1表示进制分片(报文长度超过MTU,丢弃报文),第三位更多分片,最后一个分片是1,其他是0
**13位分片偏移:**相对于原始IP报文开始处的偏移
**8位生存时间:**数据报到达目的地的最大报文跳数,每经过一个路由,TTL-=1,一直到0都没有到达目的地,报文丢弃。
8位协议:表示上层协议类型,把IP交给TCP还是UDP,其中ICMP是1,TCP是6,UDP是17
**16位头部校验和:**使用CRC校验,鉴别头部是否损坏
**32位源地址和32位目标地址:**表示发送端和接收端
应用层都包含什么协议?
应用层包含的协议有DNS、FTP、SMTP、HTTP、SNMP、Telnet等,其作用分别如下:
- 域名系统(Domain Name System,DNS):用于实现网络设备名字到IP地址映射的网络服务。
- 文件传输协议(File Transfer Protocol,FTP):用于实现交互式文件传输功能。
- 简单邮件传送协议(Simple Mail Transfer Protocol, SMTP):用于实现电子邮箱传送功能。
- 超文本传输协议(HyperText Transfer Protocol,HTTP):用于实现WWW服务。
- 简单网络管理协议(simple Network Management Protocol,SNMP):用于管理与监视网络设备。
- 远程登录协议(Telnet):用于实现远程登录功能。