计算机网络

1、TCP/IP 五层模型

1)物理层:主要是指具体的物理媒介和物理设备

  • 传输单位:比特
  • 所实现的硬件:集线器,中继器

2)数据链路层:负责在物理层面上传输数据

  • 传输单位:帧
  • 所实现的硬件:交换机、网桥

3)网络层:负责在不同网络之间传输数据,实现了不同网络之间的互联

  • 所实现的硬件:路由器
  • 代表协议:IP 协议、ARP 地址解析协议、ICMP 网际报文控制协议

4)传输层:提供端到端的可靠数据传输和错误恢复功能

  • 任务:负责为两个主机中进程之间的通信提供服务。

  • 传输单位:报文段(TCP)或用户数据报(UDP)

  • 代表协议:TCP、UDP

5)应用层:直接为应用程序提供服务的层

  • 任务:直接为用户的应用进程提供服务
  • 传输单位:报文。报文包含了将要发送的完整的数据信息,其长短不需一致
  • 代表协议:DHC 动态主机配置协议、DNS 域名解析协议、HTTP、HTTPS、FTP、SMTP

2、OSI七层模型 

OSI 七层网络协议模型就是把应用层继续细分成了:会话层 + 表示层 + 应用层

  • 会话层(Session layer):负责建立、管理和终止会话。代表协议有:RPC(Remote Procedure Call)、NFS(Network File System)等。
  • 表示层(Presentation layer):负责数据的加密、压缩、格式转换等。代表协议有:JPEG(Joint Photographic Experts Group)、MPEG(Moving Picture Experts Group)等。
  • 应用层(Application layer):提供各种服务,如电子邮件、文件传输、远程登录等。代表协议有:HTTP(HyperText Transfer Protocol)、FTP(File Transfer Protocol)、SMTP(Simple Mail Transfer Protocol)等

3、TCP三次握手

计算机网络_第1张图片

三次握手的目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主要的目的就是双方确认自己与对方的发送与接收是正常的

只有经过三次握手才能确认双发的收发功能都正常,缺一不可:

1)第一次握手(客户端发送 SYN 报文给服务器,服务器接收该报文):

  • 客户端什么都不能确认
  • 服务器确认了对方发送正常,自己接收正常

2)第二次握手(服务器响应 SYN 报文给客户端,客户端接收该报文):

  • 客户端确认了:自己发送、接收正常,对方发送、接收正常
  • 服务器确认了:对方发送正常,自己接收正常

3)第三次握手(客户端发送 ACK 报文给服务器):

  • 客户端确认了:自己发送、接收正常,对方发送、接收正常
  • 服务器确认了:自己发送、接收正常,对方发送、接收正常

4、TCP四次挥手

建立一个 TCP 连接需要三次握手,而终止一个 TCP 连接要经过四次挥手(也有将四次挥手叫做四次握手的)。这是由于 TCP 的半关闭(half-close)特性造成的,TCP 提供了连接的一端在结束它的发送后还能接收来自另一端数据的能力。

TCP 连接的释放需要发送四个包(执行四个步骤),因此称为四次挥手(Four-way handshake),客户端或服务端均可主动发起挥手动作

1)第一次挥手:客户端发送一个【FIN 报文】(请求连接终止:FIN = 1),报文中的序列号 seq = x。并停止再发送数据,主动关闭 TCP 连接。此时客户端处于 FIN_WAIT1 状态,等待服务端的确认。

客户端的第一个 FIN 包的序列号 seq 是客户端在数据传输阶段最后一个报文的序列号加上它所携带的数据的字节数(如果没有携带数据,则是最后一个报文的序列号加1)。在四次挥手的过程中,客户端的第一个 FIN 包不携带数据,所以它的序列号 seq 可以简单理解为客户端在数据传输阶段最后一个报文的序列号加 1。

2)第二次挥手:服务端收到 FIN 之后,会发送【ACK 报文】,且把客户端的序号值 +1 作为 ACK 报文的序列号值,表明已经收到客户端的报文了,此时服务端处于 CLOSE_WAIT 状态。

此时的 TCP 处于半关闭状态,客户端到服务端的连接释放。客户端收到服务端的确认后,进入FIN_WAIT2(终止等待 2)状态,等待服务端发出的连接释放报文段。

3)第三次挥手:如果服务端也想断开连接了(没有要向客户端发出的数据),和客户端的第一次挥手一样,发送【FIN 报文】,且指定一个序列号。此时服务端处于 LAST_ACK 的状态,等待客户端的确认。

4)第四次挥手:客户端收到 FIN 之后,一样发送一个【ACK 报文】作为应答,且把服务端的序列值 +1 作为自己 ACK 报文的序号值,此时客户端处于 TIME_WAIT (时间等待)状态

5、为什么 TIME_WAIT 状态持续时间是 2MSL?

MSL 是 Maximum Segment Lifetime,报文最大生存时间,它是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。

  • 丢失:如果客户端发出来的 ACK 报文丢失了,也就是第四次挥手丢失,那么服务端会重传 FIN 报文,所以,处于 TIME_WAIT 状态的客户端,要在收到这个 FIN 报文后再发送 ACK 报文,这两个报文需要经过 2MSL 的时间才能在网络中消失

所以,为了确保一个 TCP 连接的两端发出的报文都从网络中消失,客户端需要等待 2MSL 的时间

6、网络分类

地理位置

  1. 局域网(LAN):一般限定在较小的区域内,小于10km的范围,通常采用有线的方式连接起来。
  2. 城域网(MAN):规模局限在一座城市的范围内,10~100km的区域。
  3. 广域网(WAN):网络跨越国界、洲界,甚至全球范围。
    局域网和广域网是网络的热点。局域网是组成其他两种类型网络的基础,城域网一般都加入了广域网。广域网的典型代表是internet网。
  4. 个人网:个人局域网就是在个人工作地方把属于个人使用的电子设备(如便携电脑等)用无线技术连接起来的网络,因此也常称为无线个人局域网WPAN,其范围大约在10m左右。

7、 浏览器输入URL到页面返回详细过程

  • 输入网址:输入要访问的网址,即URL。
  • 缓存解析:浏览器获取URL后,先去缓存中查找资源,从浏览器缓存-系统缓存-路由器缓存中查看; 如果有就从缓存中显示界面,不再发送请求; 如果没有,则发送HTTP请求。
  • 域名解析:发现缓存中没有资源,发送HTTP请求; 在发送HTTP请求之前,需要进行DNS解析(域名解析); DNS解析:域名到IP地址的转换过程,域名的解析工作由DNS服务器完成,解析后可以获取域名相应的IP地址。
  • TCP连接:三次握手在域名解析后,浏览器向服务器发起了HTTP请求,TCP连接;因为TCP协议时面向连接的,所以在传输数据前必须建立连接,即三次握手;TCP连接建立后,浏览器开始向服务器发送HTTP请求报文。
  • 收到请求:服务器收到浏览器发送的请求信息,返回响应。
  • 页面渲染:浏览器收到服务器发送的响应,显示页面内容。 

8、TCP 如何保证可靠传输

  • 数据包校验:目的是检测数据在传输过程中的任何变化,若校验出包有错,则丢弃报文段并且不给出响应,这时 TCP 发送数据端超时后会重发数据;
  • 对失序数据包重排序:既然 TCP 报文段作为 IP 数据报来传输,而 IP 数据报的到达可能会失序,因此 TCP 报文段的到达也可能会失序。TCP 将对失序数据进行重新排序,然后才交给应用层;
  • 丢弃重复数据:对于重复数据,能够丢弃重复数据;
  • 应答机制:当 TCP 收到发自 TCP 连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒;
  • 超时重发:当 TCP 发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段;
  • 流量控制:TCP 连接的每一方都有固定大小的缓冲空间。TCP 的接收端只允许另一端发送接收端缓冲区所能接纳的数据,这可以防止较快主机致使较慢主机的缓冲区溢出,这就是流量控制。TCP 使用的流量控制协议是可变大小的滑动窗口协议。
     

 

你可能感兴趣的:(计算机网络)