TCP/IP协议简要介绍

TCP/IP for IP version 4(IPv4)是一种网络协议,Microsoft Windows使用该协议通过internet与其他计算机进行通信。理想情况下,只要基于Windows的计算机通过网络进行通信,就会使用TCP/IP。

本文介绍TCP/IP协议的组成、协议体系结构、TCP/IP的核心协议及应用程序接口。

1 TCP/IP协议体系结构

TCP/IP协议映射到一个称为DARPA模型的四层概念模型,该模型以最初开发TCP/IP的美国政府机构命名。DARPA模型的四个层次是:应用程序、传输、互联网和网络接口。DARPA模型中的每一层对应于七层开放系统互连(OSI)模型的一个或多个层。

下图显示了TCP/IP协议体系结构。

网络接口层(Network Interface Layer)

网络接口层(也称为网络访问层)负责将TCP/IP数据包放置在网络介质上和从网络介质接收TCP/IP数据包。TCP/IP被设计为独立于网络访问方法、帧格式和介质。通过这种方式,TCP/IP可以用于连接不同类型的网络。其中包括局域网(LAN)介质,如以太网和令牌环,以及广域网技术,如X.25和帧中继。与任何特定网络介质的独立性允许TCP/IP适应诸如异步传输模式(ATM)之类的新介质。

网络接口层包括OSI模型的数据链路层(Data-Link Layer)物理层(Physical Layer)。请注意,互联网(Internet Layer)没有利用网络接口层中可能存在的排序和确认服务。假设网络接口层不可靠,传输层(Transport Layer)的功能是通过会话建立、数据包的排序和确认进行可靠通信。

互联网层(Internet Layer)

Internet层处理寻址、打包和路由功能。互联网层的核心协议是IP、ARP、ICMP和IGMP。

  • 互联网协议(IP)是一种可路由的协议,用于处理IP寻址、路由以及数据包的分段和重组。
  • 地址解析协议(ARP)处理互联网层地址到网络接口层地址(例如硬件地址)的解析。
  • 互联网控制消息协议(ICMP)处理提供诊断功能和报告由于IP数据包传递失败而导致的错误。
  • 互联网组管理协议(IGMP)处理IP多播组成员的管理。

互联网层类似于OSI模型的网络层(Network Layer)。

传输层(Transport Layer)

传输层(也称为主机到主机传输层)负责为应用层( Application layer)提供会话和数据包通信服务。传输层的核心协议是传输控制协议(TCP)和用户数据报协议(UDP)。

TCP提供一对一、面向连接、可靠的通信服务。TCP处理TCP连接的建立、发送数据包的排序和确认,以及传输过程中丢失数据包的恢复。

UDP提供一对一或一对多、无连接、不可靠的通信服务。当要传输的数据量很小时(例如适合单个数据包的数据),当您不希望建立TCP连接的开销时,或者当应用程序或上层协议提供可靠的传输时,都会使用UDP。

TCP/IP传输层包含OSI传输层的职责。

应用层(Application Layer)

应用层允许应用程序访问其他层的服务,并定义应用程序用于交换数据的协议。有许多应用层协议,并且总是在开发新的协议。

最广为人知的应用层协议是那些用于交换用户信息的协议:

  • 超文本传输协议(HTTP)用于传输构成万维网网页的文件。
  • 文件传输协议(FTP)用于交互式文件传输。
  • 简单邮件传输协议(SMTP)用于传输邮件和附件。
  • Telnet是一种终端仿真协议,用于远程登录到网络主机。

此外,以下应用层协议有助于促进TCP/IP网络的使用和管理:

  • 域名系统(DNS)用于将主机名解析为IP地址。
  • 路由信息协议(RIP)是路由器用于在IP互联网上交换路由信息的路由协议。
  • 简单网络管理协议(SNMP)用于网络管理控制台和网络设备(路由器、网桥、智能集线器)之间,以收集和交换网络管理信息。

TCP/IP应用程序的应用层接口示例有Windows Sockets和NetBIOS。Windows Sockets在Windows Server 2003下提供了一个标准的应用程序编程接口(API)。NetBIOS是用于访问协议服务(如会话、数据报和名称解析)的行业标准接口。

TCP/IP应用层包括OSI会话、表示和应用层的职责。

2 TCP/IP核心协议

安装在网络操作系统中的TCP/IP协议组件是一系列相互连接的协议,称为TCP/IP的核心协议。TCP/IP协议套件中的所有其他应用程序和其他协议都依赖于以下协议提供的基本服务:IP、ARP、ICMP、IGMP、TCP和UDP。

IP

IP是一种无连接、不可靠的数据报协议,主要负责主机之间的数据包寻址和路由。无连接意味着在交换数据之前不建立会话。不可靠意味着不能保证交货。IP总是尽“最大努力”传递数据包。IP数据包可能丢失、传送顺序错误、重复或延迟。IP不会尝试从这些类型的错误中恢复。对传送的数据包的确认和丢失数据包的恢复是更高层协议(如TCP)的责任。在RFC 791中定义了IP。

ARP

当IP数据包通过共享访问发送时,基于广播的网络媒体(如以太网或令牌环)必须解析与转发IP地址对应的媒体访问控制(MAC)地址。ARP使用MAC级别的广播将已知的转发或下一跳IP地址解析为其MAC地址。ARP是在RFC 826中定义的。

ICMP

Internet控制消息协议(ICMP)为无法传递的数据包提供故障排除功能和错误报告。例如,如果IP无法将数据包传递到目标主机,ICMP会向源主机发送一条destination Unreachable消息。

IGMP

互联网组管理协议(IGMP)是一种管理网段上IP多播组中主机成员资格的协议。IP多播组,也称为主机组,是一组主机,用于侦听指定IP多播地址的IP流量。IP多播流量被发送到单个MAC地址,但由多个IP主机处理。特定主机侦听特定的IP多播地址,并接收到该IP地址的所有数据包。

以下是IP多播的一些附加方面:

  • 主机组成员身份是动态的,主机可以随时加入和离开该组。
  • 主机组可以是任何大小。
  • 主机组的成员可以跨越多个网络的IP路由器。这种情况需要IP路由器上的IP多播支持,以及主机向本地路由器注册其组成员资格的能力。主机注册是使用IGMP完成的。
  • 主机可以向IP多播地址发送流量,而不属于相应的主机组。

对于要接收IP多播的主机,应用程序必须通知IP它将在指定的IP多播地址接收多播。如果网络技术支持基于硬件的多播,则网络接口被告知放弃特定IP多播地址的数据包。在以太网的情况下,网络适配器被编程为响应于与指定的IP多播地址相对应的多播MAC地址。

主机支持以下级别之一的IP多播:

  • 级别0:不支持发送或接收IP多播流量。
  • 级别1:支持发送但不接收IP多播流量。
  • 级别2:支持发送和接收IP多播流量。Windows Server 2003、Windows 2000、Microsoft Windows NT 3.5版及更高版本,以及TCP/IP支持级别2的IP多播。

注册主机组信息的协议是IGMP,这在所有支持2级IP多播的主机上都是必需的。IGMP数据包使用IP报头发送。

IGMP消息有三种形式。

  • 主机成员报告。当主机加入主机组时,它将IGMP主机成员身份报告消息发送到所有主机IP多播地址(224.0.0.1)或指定的IP多播位置,通过引用IP多播地点来声明其在特定主机组中的成员身份。主机还可以指定需要多播流量的特定来源。
  • 主机成员身份查询。当路由器轮询网络以确保存在特定主机组的成员时,它会向所有主机的IP多播地址发送IGMP主机成员身份查询消息。如果在几次轮询之后没有接收到对轮询的响应,则路由器假定该网络在该组中没有成员资格,并停止向其他路由器通告该多播组信息。
  • 集体休假。当主机不再对接收发送到特定IP多播地址的多播流量感兴趣,并且它发送了最后一个IGMP主机成员身份报告消息以响应IGMP主机会员身份查询时,它向特定IP多点播地址发送IGMP组离开消息。本地路由器验证发送IGMP Group Leave消息的主机是否是该子网上该多播地址的最后一个组成员。如果在多次轮询之后没有收到对轮询的响应,则路由器假定该子网在该组中没有成员资格,并停止向其他路由器通告该多播组信息。

对于跨互联网路由器的IP多播,路由器使用多播路由协议来传递主机组信息,以便每个支持多播转发的路由器都知道哪些网络包含哪些主机组的成员。IGMP是在RFC 1112和2236中定义的。

TCP(传输控制协议)

TCP是一种可靠的、面向连接的传递服务。数据是分段传输的。面向连接意味着必须先建立连接,然后主机才能交换数据。可靠性是通过为传输的每个段分配一个序列号来实现的。确认用于验证是否接收到数据。对于发送的每个段,接收主机必须在指定的时间段内返回接收字节的确认(ACK)。如果没有接收到ACK,则重新发送数据。TCP是在RFC 793中定义的。

TCP使用字节流通信,其中TCP段内的数据被视为没有记录或字段边界的字节序列。

TCP端口

TCP端口为TCP段的传递提供了一个特定的位置。1024以下的端口号是众所周知的端口,由互联网号码分配机构(IANA)分配。下表列出了一些众所周知的TCP端口。

TCP三方握手

TCP连接是通过三方握手初始化的。三方握手的目的是同步连接双方的序列号和确认号,并交换TCP窗口大小或使用大窗口大小或TCP时间戳。以下步骤概述了该过程:

  1. TCP连接的发起方(通常是客户端)向服务器发送TCP段,其中包含连接的初始序列号和指示客户端上用于存储来自服务器的传入段的缓冲区大小的窗口大小。
  2. TCP连接的响应方(通常是服务器)发回一个TCP段,该段包含其选择的初始序列号、对客户端序列号的确认以及指示服务器上用于存储来自客户端的传入段的缓冲区大小的窗口大小。
  3. 发起方向服务器发送一个TCP段,其中包含对服务器序列号的确认。

TCP使用类似的握手过程来结束连接。这保证了两个主机都已完成传输,并且已接收到所有数据。

UDP

UDP提供了一种无连接的数据报服务,它提供了不可靠的、尽最大努力传递消息中传输的数据。这意味着既不能保证数据报的到达,也不能保证所传递的数据包的正确排序。UDP不会通过重新传输从丢失的数据中恢复。UDP是在RFC 768中定义的。

UDP由不需要确认数据接收并且通常一次传输少量数据的应用程序使用。NetBIOS名称服务、NetBIOS数据报服务和SNMP是使用UDP的服务和应用程序的示例。

3 TCP/IP应用程序接口

对于以标准方式访问TCP/IP 核心协议提供的服务的应用程序,Windows Server 2003等网络操作系统提供了行业标准的应用程序编程接口(API)。API是由应用程序代码以编程方式调用以执行网络功能的函数和命令集。例如,连接到网站的Web浏览器应用程序需要访问TCP的连接建立服务。

 Windows Sockets接口

Windows Sockets API是Windows Server 2003下的标准API,用于使用TCP和UDP的应用程序。写入Windows Sockets API的应用程序在许多版本的TCP/IP上运行。TCP/IP实用程序和SNMP服务是写入Windows Sockets接口的应用程序示例。

Windows Sockets提供的服务允许应用程序绑定到主机上的特定端口和IP地址,启动和接受连接,发送和接收数据,以及关闭连接。Sockets有两种类型:

  • 流Sockets使用TCP提供双向、可靠、有序和不重复的数据流。
  • 数据包Sockets使用UDP提供单向或双向数据流。

Sockets是由主机上的协议和地址定义的。地址的格式特定于每个协议。在TCP/IP中,地址是IP地址和端口的组合。两个Sockets(连接的每一端一个)形成双向通信路径。

要进行通信,应用程序指定协议、目标主机的IP地址和目标应用程序的端口。连接应用程序后,可以发送和接收信息。

NetBIOS接口

NetBIOS允许应用程序通过网络进行通信。NetBIOS定义了两个实体,一个会话级接口和一个会话管理和数据传输协议。

NetBIOS接口是用户应用程序向底层网络协议软件提交网络输入/输出(I/O)和控制指令的标准API。使用NetBIOS接口API进行网络通信的应用程序可以在支持NetBIOS接口的任何协议软件上运行。

NetBIOS还定义了一个在会话/传输级别起作用的协议。这是由底层协议软件(如NetBIOS帧协议NBFP——NetBEUI或TCP/IP上的NetBIOS(NetBT)的一个组件)实现的,它执行适应NetBIOS接口命令集所需的网络I/O。在RFC1001和1002中定义了TCP/IP上的NetBIOS。默认情况下启用NetBT,但是Windows Server 2003允许您在不包含基于NetBIOS的网络客户端或应用程序的环境中禁用NetBT。

NetBIOS为NetBIOS名称管理、NetBIOS数据报和NetBIOS会话提供命令和支持。

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

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

相关文章

蓝牙模块与其他无线技术的比较与选择

在无线通信技术日新月异的今天,蓝牙模块、WiFi、Zigbee和NFC等技术都发挥着至关重要的作用。它们在智能设备、工业自动化、智能家居等多个领域得到广泛应用,各自拥有独特的优点和局限性。本文将对这几种无线技术进行详细的比较,分析它们的优缺…

接口自动化测试工程化——了解接口测试

什么是接口测试 接口测试也是一种功能测试 我理解的接口测试,其实也是一种功能测试,只是平时大家说的功能测试更多代指 UI 层面的功能测试,而接口测试更偏向于服务端层面的功能测试。 接口测试的目的 测试左移,尽早介入测试&a…

vlc多媒体播放器(支持各种本地视频、网络视频、音频及摄像头直播地址)winform(支持全屏)自动适应x86、x64平台插件及重要代码

1、学习vlcControl1及libvlc.dll类方法(x86为例)最新v3.0.21 1.1 本博文以控件(vlcControl1)方式为主介绍 1.2 安装-引用,添加控件到窗体 using Vlc.DotNet.Forms; 1.3 窗体布局、编写代码 打开文件(以本地媒体文件为主)打开地址(以网络媒体地址为主)播放|暂停功能停…

vxe-table 监听某一列的值

需求:根据A列的内容,B列显示下拉框,文本,数值类型的数据 总思路:设置元素点击(cell-click)、双击事件(cell-dblclick),拿到当前行的数据,监听当前行的A列,如果变化,B列做…

oracle跨版本exdp 从高版本到低版本 从18c到10g

由于工作需要,有时候需要将oracle18c的数据同步到另一个环境的10g版本 测试环境 : 源数据库版本:18.13.0.0 目标数据库版本:10.2.0.4 结论: 1 从低版本导出,导入到高版本,可以,不…

vue3:父组件如何给子组件传值

在 Vue 3 中&#xff0c;父组件可以通过 props 将数据传递给子组件。下面是一个简单的例子来展示如何实现这一点。 父组件&#xff08;ParentComponent.vue&#xff09; <template><div><h1>父组件</h1><ChildComponent :message"parentMess…

VMware清理拖拽缓存

磁盘空间越用越小&#xff0c;如何快速解决磁盘空间的问题&#xff0c;甩掉烦恼 安装VM tools之后可以通过拖拽的方式把文件拉入虚拟机之中。但每一次拖拽&#xff0c;其实都是现在cache文件夹里面生成一个同样的文件&#xff0c;并使用cp拷贝的方式将其拷贝到拖拽放置的目录中…

C# WPF入门学习主线篇(二十六)—— 绑定路径和数据上下文

C# WPF入门学习主线篇&#xff08;二十六&#xff09;—— 绑定路径和数据上下文 在WPF&#xff08;Windows Presentation Foundation&#xff09;中&#xff0c;数据绑定是一个核心概念&#xff0c;它允许你将UI控件的属性与数据源属性进行绑定&#xff0c;从而实现数据和UI的…

从零学习es8

配置 编辑 elasticsearch.yml xpack.security.enabled: true 单节点 discovery.type: single-node设置账号&#xff1a; elasticsearch-reset-password -u elastic 如果要将密码设置为特定值&#xff0c;请使用交互式 (-i) 参数运行该命令。 elasticsearch-reset-password -i…

05-腾讯云Copilot及 向量数据库AI套件介绍

1 Andon Copilot核心功能介绍 2 Andon Copilot覆盖腾讯云售后、售前场景 3 腾讯云向量数据库– AI套件效果 AI 套件是腾讯云向量数据库&#xff08;Tencent Cloud VectorDB&#xff09;提供的一站式文档检索解决方案&#xff0c;包含自动化文档解析、信息补充、向量化、内容检…

HTTPS请求阶段图解分析

HTTPS请求阶段分析 请求阶段分析 请求阶段分析 一个完整、无任何缓存、未复用连接的 HTTPS 请求需要经过以下几个阶段&#xff1a; DNS 域名解析、TCP 握手、SSL 握手、服务器处理、内容传输。 一个 HTTPS 请求共需要 5 个 RTT 1 RTT&#xff08;域名解析&#xff09; 1 RTT…

工业4.0下的PLC进化论:ARMxy计算机如何重塑自动化

智能物流系统的高效与精准成为企业竞争力的关键。在这个背景下&#xff0c;传统的PLC系统因其固有的局限性&#xff0c;如扩展性差、系统封闭等&#xff0c;开始显得力不从心。ARMxy工业计算机作为新一代的PLC替代方案&#xff0c;凭借其低功耗、高性能以及高度的灵活性&#x…

Ubuntu 22.04 在线安装dockers报错

一、报错描述 在ubuntu 22.01上执行在线安装docker命令时出现E: Package docker-ce has no installation candidate错误。 sudo apt install docker-ce docker-ce-cli containerd.io 下面是详细报错信息 rootubuntu:# sudo apt install docker-ce docker-ce-cli containerd…

H5单点登录分析介绍(登录状态检验状态透传分析)

文章目录 1、单点登录解决方案1.1、后端保存登录状态1.2、token模式 2、user服务-登录接口2.1、UserController2.2、UserInfoServiceImpl2.3、载荷2.4、响应2.5、Redis Desktop Manager 3、user服务-登录成功获取用户信息回显3.1、UserController3.2、UserInfoServiceImpl3.3、…

Unity资源 之 最受欢迎的三消游戏开发包 - Bubble Shooter Kit 【免费领取】

三消游戏开发包 - Bubble Shooter Kit 免费领取 前言资源包内容领取兑换码 前言 如果你是一名 Unity 游戏开发者&#xff0c;并且正在寻找一种快速、简单的方式来创建自己的三消游戏&#xff0c;那么 Bubble Shooter Kit 就是你所需要的。 资源包内容 Bubble Shooter Kit 是…

[Qt]Qt中的QPainter绘制在哪的问题

QPainter绘制的内容是在哪儿呢&#xff1f; QPainter 与不同的 QPainterDevice 类交互&#xff08;例如窗口、pixmap、printer 等&#xff09;&#xff0c;通过 QPainterDevice 的 begin() 和 end() 方法以及 QPaintDeviceMetrics 来控制绘画设备。 如果把 QImage 作为 QPainte…

英文语法工具Grammarly for Word下载和安装

前言&#xff1a;论文写作语法检查和润色的时候&#xff0c;可以用Grammarly进行帮助。 Grammarly for Word的下载、安装、使用 官网下载Grammarly for Microsoft Office安装GrammarlyWord使用GrammarlyGrammarly使用 官网下载Grammarly for Microsoft Office 地址&#xff1…

【全开源】ChatGPT 机器人公众号小程序h5源码开源交付支持二开

AI机器人系统对接OPENAI&#xff1a;智能互联的无限可能 &#x1f310; 一、引言&#xff1a;AI机器人系统与OPENAI的碰撞 在科技日新月异的今天&#xff0c;AI机器人系统正逐渐渗透到我们生活的各个角落。而当这一智能系统与全球领先的OPENAI技术相结合&#xff0c;又将擦出…

【CT】LeetCode手撕—33. 搜索旋转排序数组

目录 题目1-思路1-1 模式识别&#xff1a;1-2 二分模板 && 本质二分红色边界二分绿色边界 1-3 本题思路①二分出第一个区间②判断 target 在哪个区间③利用二分性质 2- 实现⭐33. 搜索旋转排序数组——题解思路 3- ACM实现 题目 原题连接&#xff1a;33. 搜索旋转排序…

MathTpye7最新版软件下载与安装步骤2024最新新手小白教程

在2024年&#xff0c;作为软件开发者的你&#xff0c;一定知道MathType这款广受欢迎的数学公式编辑器吧&#xff01;&#x1f4f1;&#x1f50b;&#x1f4b0;&#x1f9ee; MathType是一款功能强大的数学公式编辑工具。无论是学术研究&#x1f4da;还是数字教育&#x1f469;‍…