通俗易懂,深入了解TCP/IP原理,

TCP/IP(Transmission-Control-Protocol/Internet-Protocol),中文译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、也是Internet国际互联网络的基础。

我上大学的时候就是一门必修课。工作后我还专门重新看了一遍,觉得比上学时理解的多了些。但是书本上东西毕竟不贴合工作。本文结合工作中常用的方面以及现实中出现过的线上问题来讲解说明。

TCP/IP协议栈为什么是“栈”?

大学的时候课本上讲过:开放系统互联参考模型OSI/RM分7层,从低到高分别是物理层,数据链路层,网络层,传输层,会话层,表示层和应用层。

先从7层模型入手,是因为下面讲的TCP/IP四层模型里缺少咱们平时工作中常用的RPC远程过程调用协议,它工作在会话层,基于下面图中的socket来实现。

实际上互联网通信使用的是TCP/IP协议栈。这里举例来说明为什么叫“栈”。

栈是一种先进后出的数据结构。拿一个HTTP报文来说,HTTP报文属于应用层协议的报文,我们输入网址,首先会调用到DNS协议(域名协议)。HTTP报文在传输层用的是TCP协议,我们把TCP压入栈中,再将IP层也压入栈中。链路层的话,就用最常见的以太网。

好了,现在我们的栈里面从头至尾依次是:

HTTP协议-TCP协议-IP协议-以太帧头

然后我们先忽略最底层的物理层,假设这个封装好的栈一样的报文漂洋过海,来到了它的目的地。对端收到这个报文以后,也就是我们封装好的这个栈一样的东西以后该怎么办呢?会不会也是先拿HTTP呢?因为这个报文是我们构造的一个栈,所以说它的顺序肯定也是栈。

因此拿取的顺序就是:

以太帧头-IP协议-TCP协议-HTTP协议

《接下来一段时间会对大家进行网络通信的魔鬼训练-理解socket》中我讲过:传输层操作是在内核空间完成的,就是说不是靠咱们平时的应用编码可以直接介入的。咱们平时直接用的就是应用层协议。想通过应用层操作传输层怎么办呢?这就用到了socket编程。因为HTTP协议的内容被封装进入了socket。这里称为套接字层。总体示意图如下:

发现没,最先被封装入的HTTP报文(套接字层)是最后才被拿走的。

TCP三次握手和四次挥手

三次握手

《懂得三境界-使用dubbo时请求超过问题》这篇文章中,我讲过三次握手。这里用打比方的方式再讲一遍:

我在《两地书--K8s基础知识》里讲过司马相如和卓文君的故事。其实在巜史记》和《汉书》里有记载说:他们的爱情是一场精心策划的阴谋。

司马相如从一开始就打算找个富婆。所以和当地县令窜通,县令经常登门拜访司马相如,司马相如却避而不见。但县令还是天天来。很有三顾茅庐的意思。当地都在传这个人得县令如此垂青一定不简单。

卓文君的爹是当地首富,听说之后就请司马相如去坐客。司马相如在宴会上的目标是和卓文君建立通信联系。他精心计算过:卓文君夫婿刚刚去世,被接回娘家。不像未出阁的姑娘那么挑剔。自己又仪表堂堂,文采不凡。应该搞得定。

但是想

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值