0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

理解TCP/IP协议遇到的三个疑问解答

454398 来源:博客园 作者: 小码哥、iByte 2020-10-22 14:40 次阅读

前段时间做了一个开发,涉及到网络编程,开发过程比较顺利,但任务完成后始终觉得有一些疑惑。主要是因为对网络协议不太熟悉,对一些概念也没弄清楚。后来 我花了一些时间去了解这些网络协议,现在对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传输。
编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • IP协议
    +关注

    关注

    3

    文章

    85

    浏览量

    21636
  • 网络协议
    +关注

    关注

    3

    文章

    265

    浏览量

    21517
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1351

    浏览量

    78989
  • SOAP
    +关注

    关注

    0

    文章

    10

    浏览量

    7661
  • HTTP协议
    +关注

    关注

    0

    文章

    61

    浏览量

    9705
收藏 人收藏

    评论

    相关推荐

    TCP/IP协议不止是两个协议

    TCP/IP协议不仅仅指的是TCPIP两个协议,而是指一
    的头像 发表于 07-31 23:07 1139次阅读
    <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b>不止是两个<b class='flag-5'>协议</b>

    为什么会有TCP/IP协议

    不同的两个人互相见了面,完全不能交流信息。因而他们需要定义一些共通的东西来进行交流,TCP/IP就是为此而生。TCP/IP不是一个协议,而是
    发表于 01-05 14:52

    tcp ip协议详解卷 下载

    tcp ip协议详解卷:第卷的内容细节覆盖了当今TCP/
    发表于 05-19 11:52 437次下载
    <b class='flag-5'>tcp</b> <b class='flag-5'>ip</b><b class='flag-5'>协议</b>详解卷<b class='flag-5'>三</b> 下载

    TCP/IP协议简介

    TCP/IP协议简介 TCP/IP传输层协议概揽 传输控制
    发表于 06-09 23:07 1395次阅读
    <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b>简介

    TCP/IP协议,TCP/IP协议内容和作用是什么?

    TCP/IP协议,TCP/IP协议内容和作用是什么? TC
    发表于 03-19 13:55 5823次阅读

    NetBEUI和,IPX/SPX ,TCP/IP协议

    NetBEUI和,IPX/SPX ,TCP/IP协议 网络协议(Protocol)是一种特殊的软件,是计算机网络实现其功能的最基本机制
    发表于 03-29 17:32 2071次阅读

    tcp ip协议_什么是tcp ip协议

    什么是tcp ip协议tcp ip协议详解,深刻讲述了tc
    发表于 05-14 16:29 6005次阅读
    <b class='flag-5'>tcp</b> <b class='flag-5'>ip</b><b class='flag-5'>协议</b>_什么是<b class='flag-5'>tcp</b> <b class='flag-5'>ip</b><b class='flag-5'>协议</b>

    TCP/IP协议进阶课程:TCP协议(2)

    TCP/IP协议进阶课程:6、TCP协议02
    的头像 发表于 07-05 00:10 4204次阅读

    TCP/IP必会的10问题图解

    的核心协议。 基于TCP/IP的参考模型将协议分成四层次,它们分别是链路层、网络层、传输层和应用层。下图表示
    的头像 发表于 11-03 09:34 1860次阅读
    <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b>必会的10<b class='flag-5'>个</b>问题图解

    TCP/IP问题

    本文整理了一些TCP/IP协议簇中需要必知必会的十大问题,既是面试高频问题,又是程序员必备基础素养。 TCP/IP
    的头像 发表于 11-04 14:46 2413次阅读

    TCP-IP协议讲解

    TCP-IP协议讲解(嵌入式开发要学习哪些内容)-TCP-IP协议讲解,讲解了TCP次握手
    发表于 08-04 12:39 46次下载
    <b class='flag-5'>TCP-IP</b><b class='flag-5'>协议</b>讲解

    TCP/IP协议

    是保证网络数据信息及时、完整传输的两重要的协议TCP/IP传输协议是严格来说是一四层的体系
    的头像 发表于 11-09 13:31 2260次阅读

    网络通信OSI协议TCP/IP协议

    TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的
    发表于 05-06 17:06 2165次阅读

    你真的了解TCP/IP协议吗?

    指的是TCPIP两个协议,而是指一由FTP、SMTP、TCP、UDP、IP
    的头像 发表于 07-20 18:09 965次阅读
    你真的了解<b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>协议</b>吗?

    什么是socket编程 socket与tcp/ip协议的关系

    基于TCP/IP协议族,这是一组用于网络通信的协议,包括传输控制协议TCP)和互联网
    的头像 发表于 11-01 16:01 167次阅读