小白网-奉贤部落-奉贤免费信息发布平台

查看: 18|回复: 0
打印 上一主题 下一主题

计算机网络的问题与解析(计算机网络相关问题)

[复制链接]

2万

主题

2万

帖子

7万

积分

论坛元老

Rank: 8Rank: 8

积分
78182
跳转到指定楼层
楼主
发表于 2025-7-26 13:01 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本文内容:
  • 网络层次结构
  • 三次握手
  • 我能握两次手吗?
  • 挥动四次
  • 第四波为什么要等2MSL?
  • 为什么要挥四次?
  • TCP有什么特点?
  • TCP和UDP有什么区别?
  • HTTP有什么特点?
  • HTTP消息格式
  • HTTP状态代码是什么?
  • HTTP1.0和HTTP1.1有什么区别?
  • HTTP1.1和HTTP2.0有什么区别?
  • HTTPS和HTTP的区别是什么?
  • 什么是数字证书?
  • HTTPS原则
  • DNS解析流程?
  • 在浏览器中输入URL以返回页面进程?
  • cookie和Session有什么区别?
  • 什么是对称加密和非对称加密?网络层次结构计算机网络系统大致可以分为三种类型:OSI七层模型、TCP/IP四层模型和五层模型。一般五层模式在面试中考察的比较多。
    TCP/IP五层模型:应用层、传输层、网络层、数据链路层和物理层。
  • 应用层:为应用程序提供交互服务。互联网中有很多应用层协议,如DNS、HTTP、SMTP等。
  • 传输层:负责为两个主机进程之间的通信提供数据传输服务。传输层协议主要包括TCP和UDP。
  • 网络层:选择合适的路由和交换节点,保证数据及时传输。包括主IP协议。
  • 数据链路层:在两个相邻节点之间传输数据时,数据链路层将网络层移交的IP数据报组装成帧,在两个相邻节点之间的链路上传输这些帧。
  • 物理层:相邻节点之间比特流的透明传输,尽可能屏蔽传输介质和物理设备的差异。假设三次握手的发送方是客户端,接收方是服务器。开始时,客户端和服务器的状态是关闭的。
  • 第一次握手:客户端向服务器发送连接请求,客户端随机生成一个初始序列号x,客户端发送给服务器的字段包含标志位SYN=1,序列号SEQ = X,第一次握手前,客户端状态为关闭,第一次握手后,客户端状态为SYN-SENT。此时,服务器的状态是监听。
  • 第二次握手:服务器收到客户端发送的消息后,会随机生成一个服务器的起始序列号Y,然后回复一个消息给客户端,包括标志位SYN=1,ACK=1,序列号seq=y,确认号ack=x+1。在第二次握手之前,服务器的状态是LISTEN,在第二次握手之后,服务器的状态是SYN-RCVD,客户端的状态是SYN-SENT。(其中SYN=1表示与客户端建立连接,ACK=1表示确认序列号有效)
  • 三次握手:客户端收到服务器的消息后,会再次向服务器发送消息,消息包含标志位ACK=1,序列号seq=x+1,确认号ack=y+1。客户端在三次握手之前的状态是同步的,而客户端和服务器在三次握手之后的状态是建立的。至此,连接建立。我能握两次手吗?三次握手主要是为了防止无效的连接请求段突然传输到服务器,导致出现问题。
  • 比如客户端A发出一个连接请求,由于网络拥塞,A没有收到确认消息,于是A再次重传连接请求。
  • 连接成功,数据传输完成后释放连接。
  • 然后,由A发送的第一个连接请求直到连接被释放一段时间后才到达服务器B。此时,B误以为A发送了新的连接请求,于是向A发送了确认消息段。
  • 如果不采用三次握手,只要B发送确认,就会建立新的连接。此时A不会响应B的确认,也不会发送数据,所以B会一直等待A发送数据,浪费资源。第四波A的应用进程首先向其TCP发送连接释放消息段(FIN=1,seq=u),再次停止发送数据,主动关闭TCP连接,进入FIN-WAIT-1(终止等待1)状态,等待b的确认。
  • B收到连接释放段后,发出确认段(ACK=1,ack=u+1,seq=v),B进入关闭等待状态。此时TCP处于半关闭状态,A和B的连接被释放。
  • A收到B的确认后,进入FIN-WAIT-2(终止等待2)状态,等待B发送的连接释放消息段。
  • 发送完数据后,B会发出连接释放消息段(FIN=1,ACK=1,seq=w,ack=u+1),B会进入LAST-ACK状态,等待a的确认。
  • 收到A B的连接释放段后,发送确认段(ACK=1,seq=u+1,ack=w+1),A进入时间等待状态。此时TCP还没有释放,需要等待定时器设定的时间为2MSL(最大段生存期),A才进入关闭状态。B收到A的确认段后关闭连接,如果没有收到A的确认段,B会重传连接释放段。第四波为什么要等2MSL?确保a发送的最后一个ACK段可以到达B..该ACK段可能会丢失。如果B未能接收到此确认消息,它将随时间重新传输连接释放段。则A可以在2 ms1内接收到这个重发的连接释放段,然后A重发确认并重启2 ms1定时器。最后,A和B都进入关闭状态。如果A在发送处于时间等待状态的ACK段后立即释放连接,它将不会接收到b重新发送的连接释放段。
  • 防止无效的连接请求段出现在此连接中。a发送完最后一个ACK段,2MSL之后,这个连接产生的所有段都会从网络上消失,这样旧的连接请求段就不会出现在下一个新的连接中。为什么要挥四次?因为当服务器收到客户端的SYN连接请求消息时,可以直接发送SYN+ACK消息。但是在关闭连接的时候,服务器收到客户端发来的连接释放消息的时候,很可能不会马上关闭套接字,所以服务器先回复一个ACK消息告诉客户端我已经收到了你的连接释放消息。只有当服务器端的消息全部发送完毕,服务器端才能发送连接释放消息,这时双方才会真正断开连接。所以需要四个浪。
    TCP有什么特点?TCP是面向连接的传输层协议。
  • 点对点,每个TCP连接只能有两个端点。
  • TCP提供可靠的传输服务。
  • TCP提供全双工通信。
  • 面向字节流。TCP和UDP有什么区别?TCP面向连接;UDP是无连接的,即发送数据前不需要建立连接。
  • TCP提供可靠的服务;UDP不保证可靠的传递。
  • TCP是面向字节流的,将数据视为一系列非结构化的字节流;UDP是面向消息的。
  • TCP拥塞控制;没有UDP拥塞控制,所以网络拥塞不会降低源主机的发送速率(对实时应用有用,比如实时视频会议等。).
  • 每个TCP连接只能是点对点的;UDP支持一对一、一对多、多对一和多对多的通信模式。
  • TCP报头开销为20字节;UDP的报头开销很小,只有8个字节。HTTP有什么特点?HTTP允许传输任何类型的数据。传输类型由内容类型来标记。
  • 无国籍。对于客户端发送的每个请求,服务器都将其视为一个新请求,上一个会话和下一个会话之间没有任何联系。
  • 支持客户端/服务器模式。消息格式HTTP请求由四部分组成:请求行、请求头、空行和请求体。
  • 请求行:包括请求方法、被访问资源的URL和使用的HTTP版本。GET和POST是最常见的HTTP方法,此外还包括DELETE、HEAD、OPTIONS、PUT和TRACE。
  • 请求头:格式为“属性名:属性值”,服务器根据请求头获取客户端的信息,主要包括cookie、主机、连接、接受语言、接受编码、用户代理。
  • 请求体:用户的请求数据,如用户名、密码等。请求消息的示例:
    POST /xxx HTTP/1.1请求行accept:image/gif . image/JPEG,请求头accept-language:zh-cnconnection:keep-alivehost:localhostuser msie 5.01;window 5.0)accept-encoding:gzip,deflate  username = dabin请求正文
    HTTP响应也由四部分组成:状态行、响应头、空行和响应体。
  • 行:协议版本、状态代码和状态描述。
  • 响应头:响应头字段主要包括连接、内容类型、内容编码、内容长度、set-cookie、最后修改、缓存控制和过期。
  • 响应体:服务器返回给客户端的内容。响应消息示例:
    Http/1.1 200 OK 服务器:Apache Tomcat/5.0.12 日期:2003年10月6日星期一13: 23: 42 GMT 内容-长度:112 响应正文
    HTTP状态代码是什么?HTTP1.0和HTTP1.1有什么区别?长连接:HTTP1.0默认使用短连接。每个请求都需要一个新的TCP连接,并且该连接不能被重用。HTTP1.1支持长连接、多路复用TCP连接,并允许客户端通过同一连接发送多个请求。然而,这种优化策略也有问题。当一个队列头的请求不能接收响应的资源时,它将阻塞后面的请求。这就是“堵队头”的问题。
  • 断点续传:HTTP1.0不支持断点续传。HTTP1.1新增了range字段,用于指定数据字节位置,支持断点续传。
  • 错误状态响应代码:HTTP1.1中增加了24个错误状态响应代码,如409(冲突)表示请求的资源与资源的当前状态冲突,410(消失)表示服务器上的某个资源已被永久删除。
  • 主机头处理:在HTTP1.0中,认为每台服务器都绑定了一个唯一的IP地址,所以请求消息中的URL不传递主机名。在HTTP1.1时代,虚拟主机技术发展迅速。一台物理服务器上可以有多个虚拟主机,它们共享一个IP地址,因此HTTP1.1添加了主机信息。HTTP1.1和HTTP2.0有什么区别?与HTTP1.1相比,HTTP2.0支持的功能:
  • 新的二进制格式:HTTP1.1基于文本格式传输数据;HTTP2.0使用二进制格式传输数据,解析效率更高。
  • 复用:在一个连接中,可以同时发送多个请求或响应,这些请求或响应可以并行传输而不被阻塞,从而避免了HTTP1.1中的“队列头阻塞”问题。
  • 头压缩,HTTP1.1的头携带了很多信息,每次都要重复发送;HTTP2.0将报头和数据分离,封装成报头帧和数据帧,并使用特定的算法对报头帧进行压缩,有效减小了报头信息的大小。而且HTTP2.0在客户端和服务器端记录了之前发送的键值对,不会重复发送相同的数据。比如请求A发送所有的头信息字段,而请求B只需要发送差分数据,这样可以减少冗余数据,降低开销。
  • 服务器端推送:HTTP2.0允许服务器将资源推送到客户端,而无需客户端向服务器发送请求。HTTPS和HTTP的区别是什么?HTTP是超文本传输协议,信息以明文传输;HTTPS是一种安全的ssl加密传输协议。
  • 与用于HTTP的端口不同,HTTP端口是80,HTTPS是443。
  • HTTPS协议需要向CA机构申请证书,一般需要一定的费用。
  • HTTP运行在TCP协议之上;HTTPS运行在SSL协议之上,SSL运行在TCP协议之上。什么是数字证书?服务器可以向CA申请证书,以避免中间人攻击(防止证书被篡改)。一个证书由三部分组成:证书内容、证书签名算法和用于验证身份的签名。
    服务器将证书传输到浏览器,浏览器从证书中获取公钥。证书可以证明公钥对应这个网站。
    数字签名的制作过程:
  • 使用CA证书签名算法来散列证书内容。
  • 用CA的私钥加密哈希值以获得数字签名。浏览器验证流程:
  • 获取证书以获取证书内容、证书签名算法和数字签名。
  • 用CA机构的公钥解密数字签名(因为是浏览器信任的机构,所以浏览器会保存其公钥)。
  • 使用证书中的签名算法对证书内容进行哈希运算。
  • 将解密后的数字签名与对证书内容进行哈希运算得到的哈希值进行比较,如果相等,则证书可信。HTTPS的原理首先是TCP三次握手,然后客户端发起HTTPS连接建立请求。客户端先发送一个Client Hello的数据包,然后服务器响应Server Hello,再将其证书发送给客户端。然后双方交换密钥,最后使用交换的密钥加密和解密数据。
  • 协商加密算法。在Client Hello中,客户端将通知服务器它的当前信息,包括客户端要使用的TLS版本、支持的加密算法、要访问的域名和服务器生成的Nonce。你需要提前通知服务器你要访问的域名,以便服务器发送相应域名的证书。
  • 响应服务器Hello,告诉客户端服务器选择的加密算法。
  • 然后,服务器向客户端发送两个证书。第二个证书是第一个证书的颁发机构(CA)的证书。
  • 使用客户端证书的证书颁发机构CA发布的RSA公钥来验证证书。下图显示证书认证成功。
  • 验证后,浏览器和服务器通过密钥交换算法生成共享的对称密钥。
  • 开始传输数据,并使用相同的对称密钥进行加密和解密。DNS解析流程?浏览器搜索自己的DNS缓存
  • 如果没有,请在操作系统中搜索DNS缓存和主机文件。
  • 如果没有,操作系统将域名发送给本地域名服务器,本地域名服务器查询自己的DNS缓存,如果搜索成功则返回结果;否则,依次向根域名服务器、顶级域名服务器和授权域名服务器发起查询请求,最后将IP地址返回给本地域名服务器。
  • 本地域名服务器将获取的IP地址返回给操作系统,并自己缓存IP地址。
  • 操作系统将IP地址返回给浏览器,并自己缓存IP地址。
  • 获取浏览器域名对应的IP地址在浏览器中输入URL以返回页面进程?解析域名并找到主机IP。
  • 使用IP浏览器直接与网站主机通信,三次握手,建立TCP连接。浏览器将使用一个随机端口启动到服务器web程序端口80的TCP连接。
  • TCP连接建立后,浏览器向主机发起HTTP请求。
  • 服务器响应请求并返回响应数据。
  • 浏览器分析响应内容,呈现它,并呈现给用户。cookie和Session有什么区别?作用范围不同。cookie保存在客户端,会话保存在服务器端。
  • 有效期不一样,cookie可以设置长期保存。比如我们经常使用的默认登录功能,会话一般会在短时间内到期,客户端关闭或者会话超时。
  • 不同的隐私政策,cookie存储在客户端,容易被窃取;会话存储在服务器端,安全性优于cookie。
  • 存储大小不同,单个cookie保存的数据不能超过4K;会话存储没有上限,但是为了服务器性能考虑,不要在会话中存储太多数据,需要设置会话删除机制。什么是对称加密和非对称加密?对称加密:双方使用相同的密钥进行加密。它的特点是加密速度快,缺点是密钥泄露会导致密文数据被解密。常见的对称加密算法是AES和DES。
    不对称加密:它需要生成两个密钥,一个公钥和一个私钥。公钥是公开的,任何人都可以使用,而私钥是私有的。公钥负责加密,私钥负责解密;或者私钥负责加密,公钥负责解密。这种加密算法安全性更高,但是计算量比对称加密大很多,加密和解密都比较慢。常见的非对称算法有RSA和DSA。
    码字不容易。如果你觉得对你有帮助,可以点个赞,鼓励一下!
    我是程序员大斌,重点分享Java后端的硬核知识。欢迎关注~
  • 回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|小白网-奉贤部落-奉贤免费信息发布平台  

    GMT+8, 2025-8-21 23:00 , Processed in 0.056827 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表