协议简史:如何学习网络协议?

大学时,学到网络协议的7层模型时,老师教了你们一个顺口溜:物数网传会表应。并说这是重点,年年必考,5分的题目摆在这里,大家爱背不背。面试

考试的时候,果真遇到这个问题,搜索枯肠,只能想到这7个字的第一个字,由于这5分,差点挂科。ajax

后来工做面试,面试官也是很喜欢七层模型,三次握手之类的问题,可是遇到这些问题时,老是以为很心虚。网络

1. 协议分层

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

应⽤层
运输层
网络层
链路层

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

1.1. 运输层的两兄弟

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

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

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

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

运输层关注的是端到端层面
网络层关注两点之间的层面
网络层并不保证消息可靠性

从下图tcp, udp, ip协议中,能够发现高并发

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

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

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

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

  • ip用来用来标记主机的位置
  • 端口号用来标记该数据应该被目标主机上的哪一个应用程序去处理

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

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

想免费学习Java工程化、分布式架构、高并发、高性能、深刻浅出、微服务架构、Spring,MyBatis,Netty源码分析等技术的朋友,能够加群:479499375,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给你们,欢迎进群一块儿深刻交流学习。

2. 深刻阅读,好书推荐

有人说这本书太厚,偷偷告诉你,其实这本书并厚,由于这本书的后面的30%部分都是附录,这本书的精华是前50%的部分
这两本图解的书,知识点讲的都是比较通俗易懂的,适合入门
这本书,让你知其然,更知其因此然
这两本书,会让你从不一样角度思考协议
若是你看了不少书,却历来没有试过网络抓包,那你只是懂纸上谈兵罢了。你永远没法理解tcp三次握手的怦然
相关文章
相关标签/搜索