计算机基础简述(一)

本文深入解析OSI七层模型与TCP/IP四层模型,详细阐述各层功能及关系,对比TCP/IP协议栈常用协议,如Ethernet、ARP、IP、ICMP、IGMP、UDP、TCP等的功能与应用场景。并通过实例解释TCP协议状态机,三次握手与四次挥手过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.OSI七层模式每一层功能,与TCP/IP四层模型的关系

OSI七层模型的第一至第七层分别为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。这七层分别有如下这些功能:
  1. 物理层:用于提供数据传输的介质,接口标准。在这一层我们会将计算机能识别的数字信号转换为能靠网线传输的模拟信号。例如我们平常所能见到的网线、光纤等便属于物理层。

  2. 数据链路层:提供二层物理寻址,通过交换机实现数据转发。数据链路层的MAC地址通过交换机来实现转发,用于在同一局域网内通信。

  3. 网络层:提供三层寻址,通过路由器实现数据的转发。这一层实现主要是靠IP地址,需要有目的IP地址以及源IP地址,并通过路由器根据路由表来查找路由,将数据包传输到目的地。一般用于不同局域网的通信。

  4. 传输层:为用户数据提供可靠的(TCP)或者不可靠传输(UDP)。可靠传输在将数据包发送到目的地址时,目的地址会检查数据包的完整性,并发送ACK码给源地址,若等待一段时间没有收ACK码,会重新发送数据包。而不可靠传输无论怎样都不会重新发送数据包。这一层提供了端对端的通信,具体到了需要什么服务。

  5. 会话层:负责建立、管理和终止应用程序之间的会话,会话之间的区别。会话层是建议在用户层与传输层之间的桥梁,由他来启动数据的传输,并注明通信双方的地址及通信内容。

  6. 表示层:定义数据的格式以及数据
    的加密,压缩。我们在使用应用程序时,我们能够看得懂的文字等,计算机是看不懂的,需要表示层进行编码,变成计算机看得懂的编码。并且规定编码格式。

  7. 应用层:通过应用程序或服务来完成网络用户的应用需求。就是我们平时在使用电脑时可以看到的软件等,例如QQ、微信这些,便属于应用层。在TCP/IP

四层模型中,应用层,表示层、会话层统一归为应用层;数据链路层和物理层统一归为链路层(网络接入层)。

2. TCP/ IP协议栈常用协议及功能

链路层:
  1. Ethernet以太网协议,用于为局域网提供通信地址(MAC地址)及通信机制。
  2. ARPARP是 在32 bit的IP地址和采用不同网络技术的硬件地址之间提供动态映射。它可以通过IP地址去请求寻找目的地址的MAC地址,还可以通过寻找自己IP地址的方法去确认自己的IP地址是否唯一。
网络层:
  1. IP(在IP首部标识为6):IP提供不可靠、无连接的数据报传输服务。不可靠是指它不能保证IP数据报能成功到达目的地。IP仅提供最好的传输服务,如果发生某种错误时,会发送ICMP消息报给信源端。任何要求的可靠性必须由上级(例如TCP)来提供。无连接指的是IP并不维护任何后续关于数据报的状态信息,每个数据报的处理都是独立的。
  2. ICMP(在IP首部标识为1):IP层用它来与其他主机或路由器交换错误报文和其他重要信息。也有一些ICMP报文把差错报文直接返回给用户进程。还可以作为地址掩码、时间戳的查询报文。
  3. IGMP(在IP首部标识为2)IGMP是Internet组管理协议。用于支持主机和路由器进行多播的,它用来把一个UDP数据报多播到多个主机。它让一个物理网络上的所有系统知道主机当前所在的多播组。多播路由器需要这 些信息以便知道多播数据报应该向哪些接口转发。
传输层
  1. UDP(在IP首部标识为17):UDP为应用程序发送和接收数据报。但是UDP是不可靠的,它不能保证数据报能安全无误地到达最终目的。但是其传输速度快,一般用于传输小的数据。
  2. TCP(在IP首部标识为6):TCP提供一种面向连接的、可靠的字节流服务。 TCP将用户数据打包构成报文段;它发送数据后启动一个定时器;另一端对收到的数据 进行确认,对失序的数据重新排序,丢弃重复数据; TCP提供端到端的流量控制,并计算和 验证一个强制性的端到端检验和。
应用层:
  1. TFTP是一个简单的协议,使用UDP协议。适合于只读存储器,仅用于无盘系统进行系统引导。它只使用几种报文格式,是一种停止等待协议。

  2. Telnet它用于在不同类型的主机之间建立连接,达到远程登陆效果。

  3. FTP(文件传送协议)它是用于文件传输的 Internet标准。是将一个完整的文件从一个系统复制到另一个系统中。它在客户进程和服务器进程 之间使用两个TCP连接—一个控制连接,它一直持续到客户进程与服务器进程之间的会话 完成为止;另一个按需可以随时创建和撤消的数据连接。

  • SMTP跟FTP相似,不过这个协议是用于邮件的传输的。

3.描述TCP协议状态机及三次握手四次挥手过程。

三次握手:
  • 第一次:客户端(处于SYN_SENT状态)发送SYN报文(建立连接的信号)和Seq=X(顺序号码)给到服务器(处于listen状态)。
  • 第二次:服务器在收到SYN码后切换为SYN_ REVD状态,并向客户端发送SYN报文(建立连接的信号),ACK码(=X+1:向客户端答复说编号seq=X已经确认)并发送编号seq=Y。
  • 第三次:客户端在收到后切换ESTABLISHED状态,并向服务器发送ACK码(Y+1:表示确认收到编号为seq=Y的信息)和编号seq=Z。服务器在收到ACK码(Y+1)后切换为ESTABLISHED状态。至此,两个建立连接。
为什么需要三次握手?

如果只有二次握手,因为客户端在发送数据包1的过程中可能因为滞留耽误时间,而非丢失,当客户端等了许久收到数据包1的ACK码时,已经依靠数据包2建立了联系,便会丢弃数据包1的ACK码,但此时服务器已经建立起联系,资源被占用。

例子:

当你看到别人发信息让你现在去打球的时候,你是会选择回句好然后马上出门?还是选择回句好,再接着询问一句:现在出门吗?,等朋友再次回复后再出门。

四次挥手:

由于TCP连接时全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接,收到一个FIN只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭,上图描述的即是如此。

  • 第一次挥手:客户端发送一个FIN(结束连接的信号)和编号M,用来关闭客户端到服务器数据传送,客户端进入FIN_WAIT_1状态。

  • 第二次挥手:服务器收到FIN后,发送一个ACK(M+1:表明是编号M的确认信息)给客服端,,服务器进入CLOSE_WAIT状态。

  • 第三次挥手:在服务器剩余的数据传输给客户端之后,服务器发送一个FIN还有编号N,用来关闭服务器到客户端的数据传送,服务器进入LAST_ACK状态。

  • 第四次挥手:客户端收到FIN后,客户端进入TIME_WAIT状态,接着发送一个ACK(N+1)给服务器,服务器进入CLOSED状态,完成四次挥手。

为什么要四次挥手,而不是三次?

因为TCP的传输是全双工的,在服务器接到FIN时,他可能还有一些数据没有发完,所以需要继续发送,就先发了确认码给客户端,等到全部数据传输完成后,再发送给客户端FIN。这里相比较于三次挥手,需要独立开来,拆成两步进行,所以便需要四次挥手。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值