趣谈网络协议
刘超
网易研究院云计算技术部首席架构师
立即订阅
39583 人已学习
课程目录
已完结 51 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 想成为技术牛人?先搞定网络协议!
免费
第一模块 通信协议综述 (4讲)
第1讲 | 为什么要学习网络协议?
第2讲 | 网络分层的真实含义是什么?
第3讲 | ifconfig:最熟悉又陌生的命令行
第4讲 | DHCP与PXE:IP是怎么来的,又是怎么没的?
第二模块 底层网络知识详解:从二层到三层 (5讲)
第5讲 | 从物理层到MAC层:如何在宿舍里自己组网玩联机游戏?
第6讲 | 交换机与VLAN:办公室太复杂,我要回学校
第7讲 | ICMP与ping:投石问路的侦察兵
第8讲 | 世界这么大,我想出网关:欧洲十国游与玄奘西行
第9讲 | 路由协议:西出网关无故人,敢问路在何方
第二模块 底层网络知识详解:最重要的传输层 (4讲)
第10讲 | UDP协议:因性善而简单,难免碰到“城会玩”
第11讲 | TCP协议(上):因性恶而复杂,先恶后善反轻松
第12讲 | TCP协议(下):西行必定多妖孽,恒心智慧消磨难
第13讲 | 套接字Socket:Talk is cheap, show me the code
第二模块 底层网络知识详解:最常用的应用层 (4讲)
第14讲 | HTTP协议:看个新闻原来这么麻烦
第15讲 | HTTPS协议:点外卖的过程原来这么复杂
第16讲 | 流媒体协议:如何在直播里看到美女帅哥?
第17讲 | P2P协议:我下小电影,99%急死你
第二模块 底层网络知识详解:陌生的数据中心 (6讲)
第18讲 | DNS协议:网络世界的地址簿
第19讲 | HTTPDNS:网络世界的地址簿也会指错路
第20讲 | CDN:你去小卖部取过快递么?
第21讲 | 数据中心:我是开发商,自己拿地盖别墅
第22讲 | VPN:朝中有人好做官
第23讲 | 移动网络:去巴塞罗那,手机也上不了脸书
第三模块 热门技术中的应用:云计算中的网络 (5讲)
第24讲 | 云中网络:自己拿地成本高,购买公寓更灵活
第25讲 | 软件定义网络:共享基础设施的小区物业管理办法
第26讲 | 云中的网络安全:虽然不是土豪,也需要基本安全和保障
第27讲 | 云中的网络QoS:邻居疯狂下电影,我该怎么办?
第28讲 | 云中网络的隔离GRE、VXLAN:虽然住一个小区,也要保护隐私
第三模块 热门技术中的应用:容器技术中的网络 (3讲)
第29讲 | 容器网络:来去自由的日子,不买公寓去合租
第30讲 | 容器网络之Flannel:每人一亩三分地
第31讲 | 容器网络之Calico:为高效说出善意的谎言
第三模块 热门技术中的应用:微服务相关协议 (5讲)
第32讲 | RPC协议综述:远在天边,近在眼前
第33讲 | 基于XML的SOAP协议:不要说NBA,请说美国职业篮球联赛
第34讲 | 基于JSON的RESTful接口协议:我不关心过程,请给我结果
第35讲 | 二进制类RPC协议:还是叫NBA吧,总说全称多费劲
第36讲 | 跨语言类RPC协议:交流之前,双方先来个专业术语表
第四模块 网络协议知识串讲 (4讲)
第37讲 | 知识串讲:用双十一的故事串起碎片的网络协议(上)
第38讲 | 知识串讲:用双十一的故事串起碎片的网络协议(中)
第39讲 | 知识串讲:用双十一的故事串起碎片的网络协议(下)
第40讲 | 搭建一个网络实验环境:授人以鱼不如授人以渔
答疑与加餐 (9讲)
协议专栏特别福利 | 答疑解惑第一期
协议专栏特别福利 | 答疑解惑第二期
协议专栏特别福利 | 答疑解惑第三期
协议专栏特别福利 | 答疑解惑第四期
协议专栏特别福利 | 答疑解惑第五期
加餐1 | 测一测:这些网络协议你都掌握了吗?
加餐2 | 创作故事:我是如何创作“趣谈网络协议”专栏的?
加餐3 | “趣谈网络协议”专栏食用指南
第2季回归 | 这次我们来“趣谈Linux操作系统”
结束语 (1讲)
结束语 | 放弃完美主义,执行力就是限时限量认真完成
趣谈网络协议
登录|注册

第33讲 | 基于XML的SOAP协议:不要说NBA,请说美国职业篮球联赛

刘超 2018-08-01
上一节我们讲了 RPC 的经典模型和设计要点,并用最早期的 ONC RPC 为例子,详述了具体的实现。

ONC RPC 存在哪些问题?

ONC RPC 将客户端要发送的参数,以及服务端要发送的回复,都压缩为一个二进制串,这样固然能够解决双方的协议约定问题,但是存在一定的不方便。
首先,需要双方的压缩格式完全一致,一点都不能差。一旦有少许的差错,多一位,少一位或者错一位,都可能造成无法解压缩。当然,我们可以用传输层的可靠性以及加入校验值等方式,来减少传输过程中的差错。
其次,协议修改不灵活。如果不是传输过程中造成的差错,而是客户端因为业务逻辑的改变,添加或者删除了字段,或者服务端添加或者删除了字段,而双方没有及时通知,或者线上系统没有及时升级,就会造成解压缩不成功。
因而,当业务发生改变,需要多传输一些参数或者少传输一些参数的时候,都需要及时通知对方,并且根据约定好的协议文件重新生成双方的 Stub 程序。自然,这样灵活性比较差。
如果仅仅是沟通的问题也还好解决,其实更难弄的还有版本的问题。比如在服务端提供一个服务,参数的格式是版本一的,已经有 50 个客户端在线上调用了。现在有一个客户端有个需求,要加一个字段,怎么办呢?这可是一个大工程,所有的客户端都要适配这个,需要重新写程序,加上这个字段,但是传输值是 0,不需要这个字段的客户端很“冤”,本来没我啥事儿,为啥让我也忙活?
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《趣谈网络协议》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(14)

  • 叹息无门
    感觉这篇写的不是很严谨:
    1,首先SOAP并非只能通过HTTP进行传输,关于SOAP binding应该提一下?
    2,SOAP 的HTTP Binding 支持比较完整的Web Method,http GET/POST都是可以支持的,并且对应不同的模式。大多数情况下只使用POST是具体实现的问题。

    作者回复: 是的,这里说的是通常的使用情况

    2018-08-01
    20
  • _CountingStars
    1.没有充分利用http协议原有的体系 比如get表示获取资源 post表示创建资源 delete表示删除资源 patch表示更新资源
    2.restful协议
    2018-08-01
    2
    7
  • 凡凡
    1.虽然http协议有post,get,head,put,delete等多种方法,但是平常来说post,get基本足够用。所以soap只支持post方法的差别应该在缺少get方法,get方法可以浏览器直接跳转,post必须借助表单或者ajax等提交。也就限制了soap请求只能在页面内获取或者提交数据。
    另外,soap协议规范上是支持get的,但是由于一般xml比较复杂,不适合放在get请求的查询参数里,所以soap协议的服务多采用post请求方法。
    2.应该要讲restful协议了,一种使用json格式交互数据的,基于http协议的,轻量级网络数据交互规范。
    2018-08-01
    4
  • DeepLin
    webservice soap的初始目标:服务自描述,其实就是没有达成,UDDI早已默默死掉

    作者回复: 是的,但是作为rpc历史上不能不说的一个环节,也要讲一下

    2018-08-16
    3
  • vloz
    面向函数和面向对象在信息交互上的特征是什么?为什么讲onc合适面向函数?
    2018-08-01
    3
  • 雪山飞猪
    这套教程真的是比以前看过的好多书都要生动形象,高手出马,化繁为简,非常感谢老师的倾情分享

    作者回复: 谢谢

    2019-05-17
    1
  • Jay
    题目1:
    HTTP请求里面有很多种提交方式,文中只是提到了可以用post,其实还是可以用其他方式的,比如get。
    题目2:
    restful,用json格式的数据发送请求和返回数据。
    2018-08-06
    1
  • blackpiglet
    1. POST 请求构造比较麻烦,需要专门的工具,所以调用和调试更费事。
    2. 更简单的应该就是RESTful 了吧,SOAP 感觉不太好用,复杂度比较高,用起来没有http顺手。
    2018-08-01
    1
  • andy
    可以使用类似thrift的DSL来描述服务接口,然后生成服务端和客户端
    2018-08-01
    1
  • spdia
    soap的方言问题过于严重。其实简单场景可以用http rest或者json+http post,或者用比较新的graphql
    2018-08-01
    1
  • mlbjay
    之前工程里需要调用第三方的SOAP接口,于是研究了一下web servies,但是云里雾里的。
    这下感觉WSDL,XML,SOAP等技术的关系现在清晰多了。
    2019-04-25
  • LHW
    不用get是考虑传输的内容长度大小吧,如果是提交文件流的形式,post怎么处理?
    2019-02-13
  • Jerry Chan
    但是这个二进制格式,怎么转换为xml这种格式呢?过程是怎么解析的呢?主要是这块不清楚,作者能解惑下不?

    作者回复: 不会有二进制转换成为xml,是由对象转换成为xml

    2018-08-18
  • 空档滑行
    1.只使用post需要把动作封装到传输内容里
    2.其他的协议比如json
    2018-08-02
收起评论
14
返回
顶部