对TCP/IP的深入浅出归纳【WEB开发者】腾讯认证空间

2023-11-16

     前段时间做了一个开发,涉及到网络编程,开发过程比较顺利,但任务完成后始终觉得有一些疑惑。主要是因为对网络协议不太熟悉,对一些概念也没弄清楚。后来 我花了一些时间去了解这些网络协议,现在对TCP/IP网络协议有了初步的认识,在这里总结出来,可以梳理一下我对网络协议的理解,加深印象。

                                                

       话说两台电脑要通讯就必须遵守共同的规则,就好比两个人要沟通就必须使用共同的语言一样。一个只懂英语的人,和一个只懂中文的人由于没有共同的语言(规则)就没办法沟通。两台电脑之间进行通讯所共同遵守的规则,就是网络协议。


那么谁来制定这个网络协议?

  国际标准化组织(ISO)定义了网络协议的基本框架,被称为OSI模型。要制定通讯规则,内容会很多,比如要考虑A电脑如何找到B电脑,A电脑在发送信息 给B电脑时是否需要B电脑进行反馈,A电脑传送给B电脑的数据的格式又是怎样的?内容太多太杂,所以OSI模型将这些通讯标准进行层次划分,每一层次解决 一个类别的问题,这样就使得标准的制定没那么复杂。OSI模型制定的七层标准模型,分别是:应用层,表示层,会话层,传输层,网络层,数据链路层,物理 层。

  虽然国际标准化组织制定了这样一个网络协议的模型,但是实际上互联网通讯使用的网络协议是TCP/IP网络协议。

  TCP/IP 是一个协议族,也是按照层次划分。共四层:应用层,传输层,互连网络层,网络接口层。 那么TCP/IP协议和OSI模型有什么区别呢?OSI网络协议模型,是一个参考模型,而TCP/IP协议是事实上的标准。TCP/IP协议参考了OSI 模型,但是并没有严格按照OSI规定的七层去划分标准,而只划分了四层,个人觉得这样会更简单点,当划分太多层次时,你很难区分某个协议是属于哪个层次 的。TCP/IP协议和OSI模型也并不冲突,TCP/IP协议中的应用层协议,就对应于OSI中的应用层,表示层,会话层。就像以前有工业部和信息产业 部,现在实行大部制后只有工业和信息化部一个部门,但是这个部门还是要做以前两个部门一样多的事情,本质上没有多大的差别。TCP/IP中有两个重要的协 议,传输层的TCP协议和互连网络层的IP协议,因此就拿这两个协议做代表,来命名整个协议族了,在说TCP/IP协议时,是指整个协议族。

  TCP/IP协议分为四个层次,但我们并不需要了解所有层次的协议,我觉得主要关注应用层和传输层的协议就可以了。拿寄送邮件举例, A寄邮件给B,A关心的是用什么格式写什么内容给B(应用层内容),是寄挂号信还是寄平信(传输层内容),但是A是不会去关注邮件传送过程中采用了那条路 线,邮递员是如何把信件递送到B手里的(互连网络层,网络接口层)。

  先说传输层,传输层有多个协议,但最主要的是TCP和UDP协议。两则的区别在于TCP协议需要接收方反馈,UDP协议不需要接收方反馈。TCP就像挂号 信,A电脑发信息给B电脑后,需要得到B电脑的反馈,这样A电脑就能知道B电脑是否已经收到信息。UDP就像平信,A电脑发信息给B电脑后,B电脑并不给 A电脑发聩,A电脑发送信息出去后并不知道B电脑是否已经收到。 因此,TCP传输比UDP传送更可靠,但是TCP传输的效率就不如UDP了。至于,在传送过程中具体选择哪种传送方式,需要具体问题具体分析。在不可靠的 网络传送过程中一般选择TCP传送方式。在讲求效率,或者不在乎传送失误的情况下可以选择UDP方式来提高传输速率。

  应用层的协议有很多,每一个协议代表一种类型的服务。HTTP协议,万维网服务。FTP协议,文件传送服务。POP3,邮件服务,SOAP协议webService服务。

  在理解TCP/IP协议的过程中,我遇到了三个困惑。

  1.什么是socket?

  以前有听说过socket编程这种说法,也有的说套接字编程。我在搜索关于socket的资料时,发现有的说socket是指一个连接,有的说 socket是一指一个端点。拿打电话做比喻,A电话机和B电话机正在通话,那么socket是指的A和B之间的连接线呢,还是指电话机(端点)?

  我现在的理解是,socket就是一个连接中的一个端点,一次通讯(连接)a,b端都会有一个socket。一个socket对应一个连接。

  2.http协议属于应用层还是传输层?

  http 超文本传送协议,听上去像是传输层的协议一样。但事实上大家都知道http和ftp一样都是属于应用层的协议,我先前很纳闷的是,既然是应用层的协议,怎 么就取这样一个误导人的名称啊。在对TCP/IP协议还不熟悉的时候,这很容易让人误解和纳闷的。后来,我在wiki上发现这么一段话:

  http中文译名问题 

  HTTP 在中国大陆被翻译为“超文本传输协议”,因为“transfer”在中文里有“传输”的含意。但依据 HTTP 定制者之一的 Roy Fielding博士的论文[1](6.5.3节),作者专门强调“transfer”表示的是“(表述状态的)转移” (Representational State Transfer),而不是“传输”(transport)。故其中文译名“超文本传输协议”恰恰引种反映了这种误解。更符合原义的译名应该为“超文本转 移协议”。

  这段话解除了我的疑惑。那么http协议当然是应用层的协议。

  3.SOAP可以使用HTTP协议进行传输吗?

  在了解SOAP协议的过程中,看到介绍说soap可以通过tcp,udp,http协议来传送。这也是让人困惑的描述。一看这句话,就会感觉http怎么 和tcp,udp协议并列了呢?难道http还是属于传输层的协议?再加上http中文译名的问题,名字听上去像传输层,初学者又要开始头大了。

  事实上,http是应用层的协议,这一点可以毫无怀疑。那么现在新的问题来了。soap和http都是应用层协议,怎么说soap能用http协议来传输呢?应用层的协议可以用应用层的协议传送吗?

  我查阅了资料,是这样一回事情,soap将信息进行XML的序列化后,再用http协议的方式再打包进行传送,传送的方式还是tcp或者udp。做个比喻 就好理解了。tcp 和 udp 都是公路,暂且把tcp认为是一般公路,udp高速公路,soap和http就都是汽车,那么soap和http都可以在tcp和udp上跑。说soap 可以通过http来传送,实际就是说soap是小轿车,http是装轿车的卡车,把soap的信息装到http里面,然后再运输,当然走的道路还是tcp 或udp。

  说soap可以通过http协议来传输,这句话不太准确,比较准确第说法是:soap信息可以通过http协议包装后通过tcp或udp传输。



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对TCP/IP的深入浅出归纳【WEB开发者】腾讯认证空间 的相关文章

  • 如何实现前后端交互

    大概流程 首先我们要实现前端的页面 我们要有一个页面来让我们肉眼可以看见 JS的语法我们要掌握 1因为我们要通过JS来绑定事件 比如我们点击按钮就能发送数据给服务器 或者从服务器获取资源 2我们通过ajax请求来实现向服务器发送请求 3通过
  • 也谈SDH、MSTP、OTN、PTN的区别和联系

    首先要说的是TDM的概念 TDM就是时分复用 就是将一个标准时长 1秒 分成若干段小的时间段 8000 每一个小时间段 1 8000 125us 传输一路信号 SDH系统的电路调度均以TDM为基础 所以看到很多人说SDH业务就是TDM业务
  • 福禄克网线测试仪的使用方法

    福禄克网线测试仪是对铜缆的1 2 3 4 5 6 7 8导线逐根 或逐对 进行测试的工具 它可以测出的主要故障有 开路 短路 反接 错对和串绕 开路故障 开路是指铜缆中一根或多根导线中间有断开的地方 这通常是由机械外力造成 线对中短路故障
  • Linux下的TCP&UDP通信作业

    题目描述 一 对于TCP传输 实现客户端发送某特定信息 字符时结束信息传输 断开连接 二 编写程序验证在同一台机器上TCP和UDP能不能同时占用同一个端口进行通信 开始编程 使用vim创建并编辑几个源文件 vim TCPserver c v
  • 老猿学5G:融合计费的Nchf和Nchf‘服务化接口消息Nchf_ConvergedCharging_Create、Update、Release和Notify

    老猿Python博文目录 一 引言 在 老猿学5G扫盲贴 中国移动的5G计费架构解读 介绍了5G融合计费的服务化接口包括 CHF提供给CTF使用的Nchf接口 OCF提供给CHF使用的Nchf 接口 这两个接口消息的内容都相同 只是服务端和
  • Python中的网络通信

    概述 在我们平时生活工作中 常常会接触到网络通信的内容 不管你是普通的用户 还是通信行业内的开发人员 都无法避免与网络通信打交道 我在初步学习python的过程中 对python的网络通信问题做了总结 所以写下这篇文章作为记录 也希望能给其
  • MQTT 控制报文 - SUBSCRIBE订阅报文,SUBACK,UNSUBSCRIBE,UNSUBACK - 第5章

    目录 5 1 SUBSCRIBE 订阅主题报文 5 1 1 固定报头 5 1 2 可变报头 5 1 3 有效载荷 5 2 SUBACK 订阅确认 5 2 1 固定报头 5 2 2 可变报头 5 2 3 有效载荷 5 3 UNSUBSCRIB
  • 老猿学5G扫盲贴:3GPP中的5G计费架构

    专栏 Python基础教程目录 专栏 使用PyQt开发图形界面Python应用 专栏 PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一 计费逻辑架构和信息流 在32240子系列文档内定义了计费的逻辑架构和信息流 如图 上图
  • RPC的详解和使用

    目录 一 基础介绍 1 1 为什么需要RPC 1 2 RPC介绍 二 RPC通信实现原理 2 2 RPC调用过程 三 RPC框架的安装和使用 PHP 3 1 php目前流行的RPC框架有哪些 3 2 Hprose框架的使用案例 项目开发比较
  • Cisco Packet Tracer 实验:生成树配置

    实验目的 1 理解广播风暴的成因 2 掌握STP和RSTP原理及配置方法 实验内容 实验描述 学校为了开展计算机教学和网络办公 建立的一个计算机教室和一个校办公区 这两处的计算机网络通过两台交换机互联组成内部校园网 为了提高网络的可靠性 作
  • 什么是节点光端机?总线型光端机有哪些优势?

    节点式光端机又称总线型光端机 其准确的定义是采用单 双纤链路式组网形式的图像传输系统 也被称为链路式光端机 那么 节点式光端机具体是什么呢 总线型光端机又有哪些优势呢 接下来我们就跟随飞畅科技的小编一起来详细了解下吧 什么是节点光端机 节点
  • 老猿学5G扫盲贴:PDU协议数据单元、PDU连接业务和PDU会话的功能详解

    专栏 Python基础教程目录 专栏 使用PyQt开发图形界面Python应用 专栏 PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一 PDU 关于PDU在百度百科是这样定义的 协议数据单元PDU Protocol Dat
  • [网络通信] 什么是零拷贝?

    什么是零拷贝 文章目录 什么是零拷贝 1 Java 实现应用缓存零拷贝 2 底层零拷贝实现机制 2 1 mmap 2 2 sendfile 2 3 splice 小结 REFERENCES 我们在写一个服务端程序时 Web Server或者
  • 扩频技术详解

    扩频是什么 扩频是一种信息处理传输技术 扩频技术是利用同欲传输数据 信息 无关的码对被传输信号扩展频谱 使之占有远远超过被传送信息所必需的最小带宽 扩频技术原理 在发端输入的信息先经信息调制形成数字信号 然后由扩频码发生器产生的扩频码序列去
  • UDP及TCP通信对比讲解

    概述 TCP是面向连接的协议 也就是说在通信发送数据前 必须和对方建立连接 以数据流的模式传播 传输过程中不会有数据丢失 速率上比UDP要慢不少 适用于对数据准确性要求高 速度可以相对慢的场景 如发送或接收邮件 打电话 微信消息传输等等 U
  • JAVA简单聊天室的实现

    鉴于之前有不少同学在跟我要客户端的代码 我近期整理了一下 把整个工程都传到github上了 地址 https github co Alexlingl Chatroom 里面有比较详细的工程运行教程 这篇博客则主要对工程的代码实现进行介绍 没
  • TSN协议之冗余协议——IEEE 802.1 CB

    在车载通信领域 我们时常面临一个困惑 要是通信线路异常断开了怎么办 这里的异常断开不仅指物理上的断开 也可能是受电磁干扰等导致线路通信功能的异常等 解决此类问题 一个显而易见的解决方案就是增加冗余路径 即把数据传输2 N份以进行备份 这样就
  • HttpClient介绍

    本文内容整理自 https blog csdn net w372426096 article details 82713315 HttpClient相比传统JDK自带的URLConnection 增加了易用性和灵活性 它不仅使客户端发送Ht
  • 项目3:(9)与安川控制器P3000通信模块代码

    1 common h 通信传输的IP地址 typedef struct char serverIp 16 int iPort CONNINFO 定义连接信息数据结构 定义发送数据的结构体 typedef struct double R Bo
  • 【网络通信】TCP网络编程

    TCP网络编程 一 面向连接的TCP流模式 二 server程序 三 client程序 四 相关文章 1 TCP网络编程 2 sockaddr和sockaddr in详解 3 socket编程为什么需要htons ntohl ntohs h

随机推荐

  • clickhouse数据导入遇到的问题

    1 采用mybatis写入数据 速度很慢的问题 采用mybatis拼接sql的方式 可以写入数据 但是效率很低 每秒数据大概200 300条数据记录 2 采用jdbc写入数据 可以使用两种数据源 新版本的包 import com click
  • 如何画出一张合格的技术架构图?

    阿里妹导读 技术传播的价值 不仅仅体现在通过商业化产品和开源项目来缩短我们构建应用的路径 加速业务的上线速率 也体现在优秀工程师在工作效率提升 产品性能优化和用户体验改善等经验方面的分享 以提高我们的专业能力 接下来 阿里巴巴技术专家三画
  • 使用Vue过滤器格式化日期时间

    学习目标 掌握Vue过滤器 created mounted beforeDestory 等函数 学习内容 Vue过滤器 created mounted beforeDestory 实现思路 1 使用Vs code创建demo html文件
  • php下载xlsx到本地,Laravel 5.8 实现Excel 下载(将信息数据导出成Excel下载到本地)...

    目的 实现将数据表信息导出成Excel下载到本地 注 我这里用Laravel 版本 5 8 框架中实现并讲解 在laravel使用第3方插件库来完成此项工作 下面我为大家提供3个链接 供大家参考 1 Excel插件库 2 Excel官网 3
  • Mina框架及接口开发

    Mina是NIO实现的一个架构 可以通过它快速开发网络通信 中间件等服务端程序 IOService接口 描述服务端和客户端接口 子类是connector和Acceptor分别用于描述客户端和服务端 IOproceser 多线程环境来处理我们
  • 【Vue2从入门到精通】Vue监听器watch,计算属性computed,方法methods的区别及使用场景

    文章目录 人工智能福利文章 前言 Vue 监听器 watch 定义及作用 示例 使用场景 Vue 计算属性 computed 定义及作用 示例 使用场景 Vue 方法 methods 定义及作用 示例 使用场景 总结 脑筋急转弯小程序抢先体
  • echarts 根据实际数据改变仪表盘颜色

    情景 实际值 gt 计划值 仪表盘颜色显示 绿色表示超过预期 相反则表示未达到预期 如图 js 控制 方法 if factVal gt planVal curOption series 1 axisLine lineStyle color
  • React中实现tab切换

    代码比较简单 并不复杂 import React Component from react class Taball extends Component constructor props super props this state cu
  • 【ML特征工程】第 3 章 :文本数据:扁平化、过滤和分块

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • MATLAB算法实战应用案例精讲-【数模应用】KMP字符串匹配(附C语言和Java代码)

    目录 前言 几个高频面试题目 KMP 算法和暴力匹配算法之间的区别 和动态规划有什么关系
  • eolinker搭建(Linux版)

    1 什么是eolinker Eolinker是一个api管理平台 可满足各行业客户在不同应用环境中对接口管理全生命周期的个性化需求 提供API开发管理 开发团队协作 自动化测试 网关以及监控等服务 帮助企业实现开发运维一体化 提升开发速度并
  • 极速版RPS选股,一秒出结果的方案是如何实现的!股票量化分析工具QTYX-V2.5.3...

    概述RPS选股策略 在国内大家可能对彼得 林奇 Peter Lynch 沃伦 巴菲特 Warren E Buffett 这些华尔街 wall street 的金融大鳄耳熟能详 其实威廉 欧奈尔 William J O Neil 的投资成就同
  • 自行装机配置

    2022年CPU天梯图 更新13代酷睿 锐龙7000 知乎 2022年显卡天梯图 更新4090 A770 A750 知乎 显卡 华硕显卡分级 华硕显卡系列 定位 价格 DUAL雪豹 丐版 便宜实惠 ATS巨齿鲨 中端 比DUAL系列贵 TU
  • 51 Proteus仿真频率计速度计超速报警数码管显示MAX7219-0001

    Proteus仿真小实验 51 Proteus仿真频率计速度计超速报警数码管显示MAX7219 0001 功能 硬件组成 51单片机 8位数码管 MAX7219数码管驱动模块 多个按键 LED灯 蜂鸣器 1 准确测量信号发生器输出的方波频率
  • Qt对象树

    01 什么是对象树 是用来组织和管理所有 QObject及其子类创建的对象 父对象 this 或 setParent 02 对象树的基本规则 对象树创建规则 对于Qt程序来说 父对象通常创建在栈上 子对象应创建在堆中 new 无需手动 de
  • ReentrantReadWriteLock原理分析

    在介绍ReentrantReadWriteLock读写锁原理之前 先来说下写锁与读锁 方便后续大家的理解 1 当资源被写锁占用时 此时是不允许去读的 只有当写锁被释后读锁才能去申请资源 2 当资源没有被写锁占用时 多个线程是可以共享资源 写
  • PyPI使用国内源

    PyPI使用国内源 https www cnblogs com sunnydou p 5801760 html 通过几次 的使用 对于默认的pip源的速度实在无法忍受 于是便搜集了一些国内的pip源 如下 阿里云 http mirrors
  • spring中基于AOP的基本配置

    Aop的概念 在不修改原有代码的情况下 增强跟主要业务没有关系的公共功能代码到 之 前写好的方法中的指定位置 这种编程的方式叫AOP 注意 AOP的底层用的代理 代理是一种设计模式 代理分为静态代理和动态代理 静态代理 静态代理需要自己建立
  • Angular ng-container ng-template 用法

    ng container本身不创建任何html代码 相当于一个容器
  • 对TCP/IP的深入浅出归纳【WEB开发者】腾讯认证空间

    前段时间做了一个开发 涉及到网络编程 开发过程比较顺利 但任务完成后始终觉得有一些疑惑 主要是因为对网络协议不太熟悉 对一些概念也没弄清楚 后来 我花了一些时间去了解这些网络协议 现在对TCP IP网络协议有了初步的认识 在这里总结出来 可