192
大学时,学到网络协议的7层模型时,老师教了大家一个顺口溜:物数网传会表应。并说这是重点,年年必考,5分的题目摆在这里,你们爱背不背。
考试的时候,果然遇到这个问题,搜索枯肠,只能想到这7个字的第一个字,因为这5分,差点挂科。
后来工作面试,面试官也是很喜欢七层模型,三次握手之类的问题,但是遇到这些问题时,总是觉得很心虚。
有时候也会想,面试官考这些协议方面的东西有什么用呢?能加工资吗?
说实在的,作为一个前端开发,即使你对协议一窍不通,也不影响你用使用React,或者Vue等框架。但是如果你对底层通信协议有个差不多的认识,你将有能力解决更多的问题。

1. 协议分层

四层网络协议模型中,应用层以下一般都是交给操作系统来处理。应用层对于四层模型来说,仅仅是冰山一角。海面下巨复杂的三层协议,都被操作系统给隐藏起来了,一般我们在页面上发起一个ajax请求,看见了network面板多了一个http请求,至于底层是如何实现的,我们并不关心。

clipboard.png

  • 应⽤层负责处理特定的应⽤程序细节。
  • 运输层运输层主要为两台主机上的应⽤程序提供端到端的通信。
  • 网络层处理理分组在⽹网络中的活动,例例如分组的选路
  • 链路层处理理与电缆(或其他任何传输媒介)的物理理接⼝口细节

常见网络协议

clipboard.png

  • 应用层的协议,例如SIP, 即可以使用TCP协议,也可以使用UDP协议
  • 别太把七层的OSI模型太当回事,因为OSI模型只是模型,基本上已经停用。重要的理解4成网络模型。
  • 有些应用层的网络协议比较复杂,可能会涉及到多个底层的协议。可以参考下面的WebRTC所使用的底层协议栈。

clipboard.png

下面重点讲一下运输层和网络层

1.1. 运输层的两兄弟

运输层有两个比较重要的协议。tcp和udp。

大哥tcp是比较严谨认真、温柔体贴、慢热内向的协议,发出去的消息,总是一个一个认真检查,等待对方回复和确认,如果一段时间内,对方没有回复确认消息,还会再次发送消息,如果对方回复说你发的太快了,tcp还会体贴的把发送消息的速度降低。

弟弟udp则比较可爱呆萌、调皮好动、不负责任的协议。哥哥tcp所具有的特点,弟弟udp一个也没有。但是有的人说不清哪里好 但就是谁都替代不了,udp没有tcp那些复杂的校验和重传等复杂的步骤,所以它发送消息非常快,而且并不保证对方一定收到。如果对方收不到消息,那么udp就会呆萌的看着你,笑着对你说:我已经尽力了。一般语音而视频数据都是用udp协议传输的,因为音频或者视频卡了一下并不影响整体的质量,而对实时性的要求会更高。

1.2. 运输层和网络层的区别

  • 运输层关注的是端到端层面,及End1到End2,忽略中间的任何点。
  • 网络层关注两点之间的层面,即hop1如何到hop2,hop2如何到hop3
  • 网络层并不保证消息可靠性,可靠性上层的传输层负责。TCP采用超时重传,分组确认的机制,保证消息不会丢失。

clipboard.png

从下图tcp, udp, ip协议中,可以发现

  • 传输层的tcp和udp都是有源端口和目的端口,但是没有ip字段
  • 源ip和目的ip只在ip数据报中
  • 理解各个协议,关键在于理解报文的各个字段的含义

clipboard.png

1.3. ip和端口号的真正含义

上个章节讲到运输层和网络层的区别,其中端口号被封装在运输层,ip被封装到网络层

那么端口号和ip地址到底有什么区别呢?

  • ip用来用来标记主机的位置
  • 端口号用来标记该数据应该被目标主机上的哪个应用程序去处理。端口号占用16位,2的16次方等于65536,所以你明白了为什么端口号的范围从0到65535了吧。

clipboard.png

1.4. 数据在协议栈的流动 封装与分用

  • 当发送消息时,数据在向下传递时,经过不同层次的协议处理,打上各种头部信息
  • 当接受消息时,数据在向上传递,通过不同的头部信息字段,才知道要交给上层的那个模块来处理。比如一个ip包,如果没有头部信息,那么这个消息究竟是交给tcp协议来处理,还是udp来处理,就不得而知了

clipboard.png

2. 深入阅读,好书推荐

上面讲的都是很基础的知识,具体细数据报各个字段的含义,还是需要看书的。纸上得来终觉浅,绝知此事要抓包。边看书边学习抓包。要学会使用wireshark工具,能够熟练使用netstat去发现tcp链接的相关问题。

  • 《http权威指南》 有人说这本书太厚,偷偷告诉你,其实这本书并厚,因为这本书的后面的30%部分都是附录,这本书的精华是前50%的部分
  • 《图解http》《图解tcp/ip》这两本图解的书,知识点讲的都是比较通俗易懂的,适合入门
  • 《tcp/ip 详解 卷1》这本书,让你知其然,更知其所以然
  • 《tcp/ip 基础》、《tcp/ip 路由技术》这两本书,会让你从不同角度思考协议
  • 《精通wireshark》、《wireshark网络分析实战》如果你看了很多书,却从来没有试过网络抓包,那你只是懂纸上谈兵罢了。你永远无法理解tcp三次握手的怦然心动,与四次分手的刻骨铭心。
  • 《网络是怎样连接的》非常好看,引人入胜的科普书籍,作者户根勤从软件到硬件,方方面面造诣都很深。
  • 《tcp ip 入门经典》

扫码订阅我的微信公众号:洞香春天。每天一篇技术短文,让知识不再高冷。

图片描述


端端
3.8k 声望1.1k 粉丝