计算机网络——TCP/IP网络层次模型

计算机网络——TCP/IP网络层次模型

  • TCP/IP网络模型的起源
  • TCP/IP网络层次的结构
    • TCP/IP如何交互
  • TCP/IP协议栈
    • TCP/IP协议栈主要协议
  • TCP/IP 和 OSI之间的区别
    • 面向连接和无连接
    • 面向连接
      • 三次握手,四次挥手
    • 无连接

我们上一次了解了OSI的网络层次模型,如果还没有看过上一次OSI网络模型的可以点击这里:

https://blog.csdn.net/qq_67693066/article/details/136597950

我们今天来看实际在生活中使用更广的TCP/IP网络模型

TCP/IP网络模型的起源

TCP/IP网络模型的起源可以追溯到20世纪60年代末和70年代初,当时美国国防部的高级研究计划局(ARPA)启动了一个名为ARPANET的项目,旨在建立一种分散的、鲁棒的通信网络,以连接分散在全国各地的大学和研究机构。这个项目的成功和发展奠定了互联网的基础,并推动了TCP/IP协议的发展和普及。

在ARPANET项目的早期,各个研究机构使用各自独立的网络协议,这导致了不同网络之间的互联互通问题。为了解决这个问题,美国国防部要求设计一种能够实现不同网络之间通信的协议,于是TCP/IP协议应运而生。

在20世纪70年代中期,Vinton Cerf和Robert Kahn等人设计了TCP/IP协议族,使得不同网络之间能够进行有效的通信。这一设计成为了互联网的基础协议,TCP/IP协议也成为了互联网通信的标准。

TCP/IP协议族的设计受到了分层的思想启发,因此它被分为四个层次:应用层、传输层、网络层和数据链路层。这种分层结构使得协议的设计更加模块化和可扩展,并且简化了网络的管理和维护工作。

随着互联网的发展,TCP/IP协议成为了事实上的标准,并逐渐取代了其他网络协议,成为了互联网通信的基石。TCP/IP网络模型也因其简单、灵活和可扩展的特性而被广泛应用于各种网络环境中。

TCP/IP网络层次的结构

TCP/IP网络有四层结构:
在这里插入图片描述

网络接口层(或主机到网络层)这是TCP/IP模型的最底层,主要负责主机的逻辑连接和物理连接。它主要负责将数据从主机发送到网络上,以及从网络上接收数据。具体来说,它负责接收从网络层交来的IP数据包,并将其通过低层物理网络发送出去;或者从低层物理网络上接收物理帧,然后抽出IP数据包交给网络层。
网络层(或互联网层):这一层是TCP/IP模型的核心,主要负责路由寻址和分组交换。它根据数据包头部的源IP地址和目的IP地址,将数据包发送到正确的目的地。此外,网络层还定义了标准的分组格式和接口参数,使得分组可以在不同网络间实现漫游。当网络中部分设备不能正常运行时,网络层的设计也确保了网络服务不被中断,已经建立的网络连接依然可以有效地传输数据。
传输层传输层在源结点和目的结点的两个进程实体之间提供可靠的端到端的数据传输。它不仅可以提供不同服务等级、不同可靠性保证的传输服务,还可以协调发送端和接收端之间的传输速度差异。主要的传输层协议包括TCP(传输控制协议)和UDP(用户数据报文协议)。
应用层这是TCP/IP模型的最高层,主要为用户提供多种网络应用程序,如电子邮件、远程登录等。应用层规定应用进程在通信中所遵守的协议,为应用程序提供接口服务。由于并不是所有的网络服务都需要会话层和表示层的功能,因此这些功能逐渐被融合到TCP/IP模型中应用层的那些特定的网络服务中。

TCP/IP如何交互

TCP/IP模型的四层之间通过一系列协议和接口实现交互,确保数据在网络中正确、高效地传输。以下是四层之间交互的简要概述:

网络接口层与网络层的交互
网络接口层负责将数据帧从网络层发送到物理网络,或从物理网络接收数据帧并交给网络层。
当网络层需要发送数据时,它会将数据封装成IP数据包,并交给网络接口层。网络接口层根据硬件的物理地址(如MAC地址)将数据帧发送到网络上。
当网络接口层从网络上接收到数据帧时,它会抽取IP数据包并交给网络层进行处理。

网络层与传输层的交互
网络层主要负责路由选择和分组交换,确保IP数据包能够到达目的主机。
当传输层需要发送数据时,它会将数据封装成TCP或UDP报文段,并指定目的主机的端口号,然后将报文段交给网络层。
网络层将报文段封装成IP数据包,并添加必要的路由信息,然后通过网络接口层发送出去。
当网络层接收到来自网络接口层的IP数据包时,它会根据路由信息将其转发到正确的目的主机,并交给传输层进行处理。

传输层与应用层的交互
传输层为应用程序提供端到端的通信服务,确保数据的可靠传输。
当应用层需要发送数据时,它会将数据通过传输层的接口(如套接字)发送给传输层。
传输层将数据封装成TCP或UDP报文段,并添加必要的控制信息(如序列号、确认号等),然后交给网络层进行传输。
当传输层接收到来自网络层的报文段时,它会根据控制信息进行相应的处理(如重传、排序等),然后将数据通过接口交给应用层。

应用层之间的交互
应用层负责处理各种网络应用程序的逻辑。
当一个应用程序需要发送数据给另一个应用程序时,它会通过应用层的协议(如HTTP、FTP等)将数据格式化为应用层协议所规定的形式,并通过传输层发送出去。
接收端的应用程序通过应用层协议解析接收到的数据,并根据应用程序的逻辑进行相应的处理。

TCP/IP协议栈

其实,我们这个模型是通过TCP/IP协议栈抽象出来的:
在这里插入图片描述通过这个协议栈,我们抽象出来了四层结构。

TCP/IP协议栈主要协议

TCP/IP协议栈中一些主要的协议及其功能:

应用层协议
Telnet:用于远程登录到另一台计算机上,并在那台计算机上执行命令。
FTP (文件传输协议):用于在两台计算机之间传输文件。
SMTP (简单邮件传输协议):用于发送和接收电子邮件。
DNS (域名系统):将人类可读的域名(如www.example.com)转换为计算机可读的IP地址。
传输层协议
TCP (传输控制协议):一种面向连接的协议,提供全双工的字节流,确保数据的可靠传输。
UDP (用户数据报协议):一种无连接的协议,不保证数据的可靠传输,但通常用于实时通信或需要快速响应的应用。
网络层协议
IP (互联网协议):负责数据包的路由和寻址,确保数据包能够到达目的主机。
ICMP (互联网控制消息协议):处理路由器与主机之间的错误和控制消息,例如“目标不可达”消息。
IGMP (互联网组管理协议):用于网络中的多播(将数据发送到一组计算机)。
网络接口层(或链路层)协议
ARP (地址解析协议):将IPv4地址映射到硬件地址(如MAC地址),以便在局域网内进行通信。
RARP (反向地址解析协议):将硬件地址映射到IPv4地址,这在现代网络中较少使用。

TCP/IP 和 OSI之间的区别

TCP/IP和OSI之间的区别主要体现在以下几个方面:

层次结构:OSI参考模型有7层,而TCP/IP参考模型只有4层。虽然两者都有网络层(或称互联网层)、传输层和应用层,但其他层并不相同。TCP/IP的四层有时也被称为链路层(数据链路层)、网络层、传输层和应用层。
服务类型OSI模型的网络层提供面向连接和无连接两种服务,但传输层只提供面向连接服务。而TCP/IP模型在网络层只提供无连接服务,但在传输层却提供面向连接和无连接两种服务。
在这里插入图片描述
概念区分:OSI参考模型中明确区分了服务、接口和协议这三个基本概念,而TCP/IP模型在这方面并不十分清晰。OSI模型中的协议具有更好的隐蔽性,在发生变化时也更容易被替换。
通用性:OSI参考模型是在其协议被开发之前设计出来的,因此更具有通用性,但也意味着在协议实现方面可能存在某些不足。相反,TCP/IP模型则是先有协议和应用再提出模型,并且参照了OSI模型。
适用范围和历史:OSI一般用于理论研究和教学,而TCP/IP则广泛应用于实际的工业生产,特别是互联网领域。TCP/IP协议是互联网的基础协议,广泛应用于全球互联网。
层次交互方式:TCP/IP协议族的层次结构更加紧凑和灵活,各层之间的界限不那么明显,更容易扩展和实现。

面向连接和无连接

面向连接

面向连接是指在用户开始传递信息前,必须在通信双方或更多方间建立起连接的网络。这种连接可以是实在的电路连接,也可以是逻辑的虚连接(虚电路)。面向连接网是端到端的连接通路电信网,电路交换的电信网是依靠一系列交换机协同动作来实现的。
以TCP为例,TCP是面向连接的、可靠的进程到进程通信的协议,它提供全双工服务,即数据可在同一时间双向传输。每一个TCP都有发送缓存和接收缓存,用来临时存储数据。TCP报文段包括源端口号、目标端口号、序号、确认号、首部长度、窗口大小等信息,以确保数据的准确传输。
在面向连接的网络中,通信双方在通信时,要事先建立一条通信线路,其过程包括建立连接、使用连接和释放连接。这种服务的主要特点是在数据传送前,先建立连接,连接建立后再传输数据,数据传送完后,释放连接。

三次握手,四次挥手

三次握手和四次挥手是TCP/IP协议中用于建立连接和断开连接的重要过程。

三次握手:

SYN:客户端向服务器发送一个SYN包,请求建立连接,并等待服务器的确认。SYN包中包含了客户端的初始序列号。
SYN+ACK:服务器收到SYN包后,确认客户端的请求,并发送一个SYN+ACK包给客户端。这个包既是对客户端SYN包的确认,同时也包含了服务器自己的初始序列号,请求客户端确认。
ACK:客户端收到SYN+ACK包后,向服务器发送一个ACK包,表示已经收到服务器的SYN+ACK包,并等待服务器发送数据。至此,三次握手完成,TCP连接建立成功。

四次挥手:

FIN:当客户端完成数据传输后,会向服务器发送一个FIN包,请求断开连接。此时客户端进入FIN_WAIT_1状态。
ACK:服务器收到FIN包后,发送一个ACK包给客户端,确认收到客户端的断开连接请求。此时服务器进入CLOSE_WAIT状态,客户端进入FIN_WAIT_2状态。
FIN:服务器在发送完所有数据后,向客户端发送一个FIN包,请求断开连接。此时服务器进入LAST_ACK状态。
ACK:客户端收到服务器的FIN包后,发送一个ACK包给服务器,表示已经收到并确认断开连接的请求。此时客户端进入TIME_WAIT状态,等待一段时间以确保服务器收到ACK包后关闭连接。服务器收到ACK包后关闭连接,进入CLOSED状态。至此,四次挥手完成,TCP连接断开。

这里简单了解一下,我们之后要细讲。

无连接

无连接是通信技术之一,指的是通信双方不需要事先建立一条通信线路,而是把每个带有目的地址的包(报文分组)送到线路上,由系统自主选定路线进行传输。
无连接模式的典型例子包括邮政系统、IP和UDP协议。在邮政系统中,信件通过天罗地网式的选择路线进行传播,类似于无连接模式中的报文分组传播。而IP和UDP协议作为无连接协议,它们在网络传输中不建立和维护会话连接,只是简单地将数据报发送到目的地,不保证数据报的顺序性和可靠性。
这种无连接的方式有其特定的应用场景和优势,例如在某些需要快速、简单、灵活的通信场景中,无连接模式可能更为适用。然而,由于不建立和维护会话连接,无连接模式在数据传输的可靠性和顺序性方面可能不如面向连接的通信方式。
需要注意的是,无连接并不等于完全不进行任何连接处理。在某些情况下,如HTTP协议中的请求-响应模式,虽然每次请求和响应都是独立的,但服务器在处理完客户的请求并收到应答后,会断开连接。这种断开连接是为了尽快释放资源,以便服务其他客户端。但这并不意味着在整个通信过程中没有任何连接的存在或处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/738099.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux学习-内存管理

目录 内存管理 malloc free 使用 字符串存储申请堆区 自主输入个数,然后通过malloc在程序中申请空间,不用必须提前指定大小 内存溢出 内存泄漏 内存碎片 内存管理 函数名就是指向该函数的函数指针。 堆区是自低向高,栈区是自高向低…

ffmpeg日记4001-原理介绍-视频切割原理

原理 打开输入---->打开输出---->根据输入来创建流---->拷贝流设置---->循环读帧---->判断时间点是否到达切割点,并做设置---->设置pts和dts---->写入---->善后 重点是pts和dts如何设置。参考《ffmpeg学习日记25-pts,dts概念的…

ftp速度太慢只有几十k,怎么解决?

FTP是目前许多企业日常运营中还在用的文件传输方式。虽然比较普遍,然而,许多用户在使用FTP时经常遇到速度缓慢的问题,有时甚至只有几十KB/s。这不仅影响工作效率,还可能导致许多数据传输的延迟的问题。本文将探讨FTP速度慢的原因&…

计算机服务器中了faust勒索病毒怎么解密,faust勒索病毒解密工具流程

在互联网飞速发展的今天,越来越多的企业走向了数字化办公模式,许多企业开始利用网络计算机开展各项工作业务,网络也为企业的生产效率提供了极大便利,但网络中存在许多恶意威胁。近日,云天数据恢复中心接到许多企业的求…

Java 学习和实践笔记(34):对象的转型(casting)

对象的转型(casting)有两种,一种是向上转型,一种是向下转型。 向上转型:父类引用指向子类对象。这属于自动类型转换,编译器会自动完成。 上一节的多态中,形参为父类Animal, 但是调用时实参为子类对象Dog&…

linux中查看并修改日期

1.如何在终端控制行界面显示并且调整日期: 显示当前日期: 2.显示当前年份: 3.显示当前月份: 4.显示当前天数: 5.显示到目前为止的天数: 6.显示日期: date “%x“ ≈ date ”%Y %m %d"…

09-设计模式 面试题

你之前项目中用过设计模式吗? 工厂方法模式分类 简单工厂模式工厂方法模式抽象工厂模式工厂模式 需求:设计一个咖啡店点餐系统。 设计一个咖啡类(Coffee),并定义其两个子类(美式咖啡【AmericanCoffee】和拿铁咖啡【LatteCoffee】);再设计一个咖啡店类(CoffeeStore)…

一、什么是 HarmonyOS ?

HarmonyOS 是华为开发的一款面向未来的全场景分布式智慧操作系统,将逐步覆盖 18N 全场景终端设备。 对消费者而言,HarmonyOS 用一个“统一的软件系统”,从根本上解决消费者面对大量智能终端体验割裂的问题,为消费者带来统一、便利…

Kafka Stream入门

1. 什么是流式计算 流式计算(Stream Processing)是一种计算模型,旨在处理连续的数据流。与传统的批处理模型不同,流式计算可以实时或接近实时地处理和分析数据,这意味着数据在生成后不久就被处理,而不是存…

基于android的物业管理系统的设计与实现19.8

目录 基于android的物业管理系统的设计与实现 3 摘 要 3 Android property managemengt system 5 Abstract 5 1 绪论 6 1.1 选题背景 6 1.2 课题研究现状 6 1.3 设计研究主要内容 7 1.4 系统主要设计思想 8 2 开发环境 8 2.1 Android系统的结构 8 图2-1 Android系统架构图 9 2…

Python绘图-14绘制3D图(下)

14.7绘制3D等高线图个性化colormap 14.7.1图像呈现 14.7.2绘图代码 import numpy as np # 导入numpy库,numpy是Python的一个强大的数值计算扩展程序库,支持大量的维度数组与矩阵运算。 import matplotlib.pyplot as plt # 导入matplotlib的绘图模块p…

UDP编程及特点

目录 1.UDP编程流程 2.recvfrom()、sento() 3.代码演示 3.udp特点 1.UDP编程流程 socket()用来创建套接字,使用 udp 协议时,选择数据报服务 SOCK_DGRAM。sendto()用来发送数据,由于 UDP 是无连接的,每次发送数据都需要指定对端…

神经网络基本使用

1. 卷积层 convolution layers import torch import torchvision from torch import nn from torch.nn import Conv2d from torch.utils.data import DataLoader from torch.utils.tensorboard import SummaryWriterdataset torchvision.datasets.CIFAR10(./dataset,trainFa…

Aspose.Words指定位置插入table

如果在创建书签,然后在书签位置插入表格,会出现格式错乱,在单元格位置里面有一个表格,不符合实际使用。正确做法是复制模板文件里面的表格行,然后插入若干行。 如图标记红色位置插入动态数据行,是先复制标…

day1_C++:实现C++风格字符串输出

1.提示并输入一个字符串&#xff0c;统计该字符中大写、小写字母个数、数字个数、空格个数以及其他字符个数&#xff0c;要求使用C风格字符串完成 程序代码&#xff1a; #include <iostream>//标准输入输出流 #include <string.h>//C中字符串相关头文件 using na…

HBase分布式数据库的原理和架构

一、HBase简介 HBase是是一个高性能、高可靠性、面向列的分布式数据库&#xff0c;它是为了在廉价的硬件集群上存储大规模数据而设计的。HBase利用Hadoop HDFS作为其文件存储系统&#xff0c;且Hbase是基于Zookeeper的。 二、HBase架构 *图片引用 Hbase采用Master/Slave架构…

LeetCode226题:翻转二叉树(python3)

class Solution:def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:if not root:return rootleft self.invertTree(root.left)right self.invertTree(root.right)root.left,root.right right,leftreturn root复杂度分析 时间复杂度&#xff1a;O(N…

HTML 学习笔记(十一)表单

一、分块 1.单行文本框控件–文本框和密码框 文本框控件通过单标签input实现&#xff0c;其具有必要属性type来控制输入控件的类型(默认为text即文本信息)&#xff0c;密码框的type为password(口令)。   表单的动作属性定义了目的文件的文件名。由动作属性定义的这个文件通常…

Docker 安装部署MySQL教程

前言 Docker安装MySQL镜像以及启动容器&#xff0c;大致都是三步&#xff1a;查询镜像–>拉取镜像–>启动容器 1、查询镜像 docker search mysql2、拉取镜像 拉取镜像时选择stars值较高的 docker pull mysql:5.7 #这里指定拉取对应的版本Mysql5.7&#xff0c;没有指…

ArcGIS学习(十六)基于交通网络的城市情景分析

ArcGIS学习(十六)基于交通网络的城市情景分析 本任务给大家带来一个非常重要的内容一一基于交通网络的城市情景分析。基于交通网络模拟交通出行并进行相关分析是ArcGIS里面一种常用的分析方法,大家一定要掌握!本任务包括三个关卡: 交通网络模型构建基于交通网络模型的基本…