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

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

后来工作面试,面试官也是很喜欢七层模型,三次握手之类的问题,但是遇到这些问题时,总是觉得很心虚。

1. 协议分层

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

应⽤层

运输层

网络层

链路层

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

1.1. 运输层的两兄弟

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

大哥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三次握手的怦然

java的网络协议学习_协议简史:如何学习网络协议?相关推荐

  1. java 稀疏贝叶斯算法_稀疏贝叶斯学习(SparseBayesianLearning).PDF

    稀疏贝叶斯学习(SparseBayesianLearning) 稀疏贝叶斯学习(Sparse Bayesian Learning) 张智林(Zhilin?Zhang)? z4zhang@ Depart ...

  2. python网络编程讲解_详解Python Socket网络编程

    Socket 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的,例如我们每天浏览网页.QQ ...

  3. 构建强化学习_如何构建强化学习项目(第1部分)

    构建强化学习 Ten months ago, I started my work as an undergraduate researcher. What I can clearly say is t ...

  4. plc-st编程语言学习_这就是您可以学习所有编程语言的方式,是的-“全部”

    plc-st编程语言学习 "我应该首先学习哪种编程语言?" 许多初学者在开始学习编码时都会遇到这个常见问题. "哪种是最好的编程语言?" 在学习了一些语言之后, ...

  5. dcn网络与公网_电信运营商DCN网络的演变与规划方法(The evolution and plan method of DCN)...

    摘要:随着电信业务的发展和电信企业经营方式的转变,DCN网络的定位发生了重大的演变.本文基于这种变化,重点讨论DCN网络的规划方法和运维管理方法. Digest: With the developme ...

  6. 设置好网络协议了为何网络还是不通_记一次菜鸟网络的面试经历

    我是一个不太爱折腾的人,因此在一个公司待久了,就不太会轻易跳槽.正因为如此,我在上家公司待了整整三年,在这里,认识了一群可爱的人,便更不舍得离去. 但因为公司属于传统企业,技术上并没有太大挑战,个人也 ...

  7. iec60870-5-104通讯协议编程_三菱FX编程口通讯协议1——协议解读

    三菱PLC编程口通讯协议: 1.三菱PLC编程口通讯协议有四个命令,如下: 2.三菱FX系列PLC地址对应表: PLC_X Group Base AddRess=128: Const PLC_Y_Gr ...

  8. 空调控制协议盒_睿志诚汽车总线协议盒 后装车机也能控制车辆

    车内加装了导航车机后,我们会发现通过车机也能控制车辆空调.车灯.门窗等信息,那么到底车机是通过什么实现的呢?据悉,只需要在车机内接入睿志诚Can-Bus汽车总线协议盒,这些功能就能"信手拈来 ...

  9. java 主机字节序 网络字节序_主机字节序 与 网络字节序

    一.字节顺序 是指占用内存多于一个字节类型的数据在内存中的存放顺序. 计算机电路先处理低位字节,效率比较高,因为计算都是从低位开始的.所以,计算机的内部处理都是小端字节序. 但是,网络传输.文件储存. ...

  10. java的重点是什么_你知道初学者学习Java的重点是什么吗?

    如果调试一个程序让你很苦恼,千万不要放弃,成功永远在拐角之后,除非你走到拐角,否则你永远不知道你离他多远,所以,请记住,坚持不懈,直到成功. 集合框架 1:String类:字符串(重点) (1)多个字 ...

最新文章

  1. Java开发四年的程序员想再学习一门语言,该选着C还是Python呢?
  2. 基于 RT-Thread的麦克纳姆轮小车循迹运动控制算法开发和研究
  3. HDU 1241Oil Deposits---(dfs)
  4. Assets.car 桌面解压工具
  5. 最长子段和 11061008 谢子鸣
  6. Pytorch中CNN入门思想及实现
  7. java 并发框架源码_某网Java并发编程高阶技术-高性能并发框架源码解析与实战(云盘下载)...
  8. 获取服务器时间的软件如何修改时间,小程序云开发获取服务器时间
  9. 理解 with递归调用 Sqlserver 树查询
  10. 2021-06-21层次选择器
  11. 十大编程语言的优劣对比简述
  12. 晶振匹配电容如何计算?--转载
  13. 多个excel工作簿合并_你还在使用复制粘贴合并表格?一个公式搞定Excel多工作簿合并...
  14. 【SAP消息号AA347】
  15. 双系统启动修复完整解决方案
  16. 护照阅读器助力旅行社快捷录入
  17. jQuery源码分析系列(一)初识jQuery
  18. 直播出新规 这些行为会被限制参加活动
  19. Python实现1-100猜数字游戏
  20. 侍魂胧月传说服务器维护,《侍魂胧月传说》2018年12月12日2:00进行全服停机更新维护...

热门文章

  1. 2021年2月23日 星期二 八九 阴
  2. AP系列文章——PDM麦克风
  3. 力扣----算法(一)
  4. 改成每天晚上锻炼身体
  5. ROS2机器人-C++和Python怎么选
  6. 你的域名前要加www吗?
  7. PEG磷酸盐mPEG-phosphoric acid,Phosphate-PEG,甲氧基聚乙二醇磷酸,一种表面活性PEG衍生物
  8. web html常用标签含义,WEB前端开发之HTML:常用标签知多少
  9. 手机内存不足别乱删,打开这个设置,彻底清除垃圾,手机流畅不卡
  10. java faker_Java基于Javafaker生成测试数据