从本质上了解TCP/IP协议族

为什么要分层

没有分层的情况下是直接从一端把消息传输至另一端,网络传输无非是从客户端传信息到服务端,或者服务端传信息到客户端,那么在传输过程中是存在网络不稳定的情况,数据丢失了怎么办?其实是这样的,客户端发送消息给服务端,正常情况下服务端会在收到消息后回馈信息给客户端,客户端才知道收到了。假如数据丢失了,客户端假如在一定时间内没收到回馈,那么就重新传输信息。

再来看一点,假如我们的数据很大,经过每个中间节点的时间增加了,到最后一个节点的时候数据丢失了,那岂不是要重新传输了,假如频繁发生,用户体验到的感觉就是网络很不稳定。怎么解决呢?把数据分块传输呗。

例如:现在数据一大块,把它分成ABCDE...,每次传输顺序是A、B、C...,假如传到C的时候传输失败了,但AB都传输成功了,那就继续传输C,成功后就接着往下一块块传输。

怎么分层

把数据分块就要分层了?接着往下看

像HTTP这样的就是做网络报文的传输,FTP是做文件的传输,DNS是用来做域名服务的,这都是具体的目标,也就是你有要做的事情,这些要做的事情,就可以用应用层来表示了。

那么这些应用层的做的事情要分块传输,而且不单单是HTTP,像DNS和FTP同样也要分块传输。想一下,在Java思想看来,多个类都要做同一种事,是不是要把这件事抽出来做接口。

那么就把分块传输当成一个层来看,这一层是拿到应用层的数据后再把它分块传输,传输完到达另一端后再把数据拼接成完成信息后再丢给应用层,这样把数据把应用层数据分块再合并完传给应用层的这一层作为传输层。像TCP和UDP协议都是处于传输层。

说到TCP和UDP,两个的传输差别就是TCP一定要保证数据的正确性,简单点来说就是数据从一端到另一端一定是要完整的,而UDP传输过程可能会丢包,导致数据不完整,例如我们看直播的时候,网络突然不好了,直播卡住了,过了一会网络正常了,但现在是直播,所以不会关注那些事情,继续传输当前的数据。

那么区别都知道了,相同点是什么?不就是传数据嘛,那是不是抽一层出来,把这些传输层的分块数据通过网络传输到另一端。这就是网络层。网络层只负责对这些数据块进行传输,拿到了就传,没有就不传。而且网络层对数据传成功没不关心,拿到数据就传,至于数据成不成功,取决于传输层是否要再对数据进行传输。IP协议就处于网络层。

对于网络层里面的传输还需要靠物理设备来实现。我们现实生活中在物理设备上对网络层的支持一般是以太网,需要通过以太网(或者WIFI)才能实现真正意义上的网络传输。所有又有了一层,数据链路层

以上是对网络模型的本质理解。

TCP连接

在传输的时候要事先确定好对方是谁,所以要建立TCP链接,并且这些连接是有状态的(HTTP是无状态的)。这种有状态体现在传输的时候知道对方是对,保持着这种状态进行传数据。

建立TCP连接需要三次握手,什么是三次握手?举个例子,假如A要和B链接:

1、A发消息跟B说:我要跟你进行链接
2、B收到A的消息后,要告知A收到了消息,并回复了:我收到你的消息了
3、A也要告诉B收到了B的消息:我也收到了你的消息,可以开始正常交流了

其中,1是可以理解的,2是因为B得让A知道A->B是正常的并且B也要发消息,而3是因为A告诉B收到了消息,可以正常通信了。

既然有连接就有关闭,为什么要关闭?因为连接时把对方信息保存在自己的本地,关闭是为了释放资源。关闭比连接多了一次。

TCP连接的关闭也叫四次挥手,举个例子,假如A要和B断开连接:

1、A跟B发消息说:我要跟你断开连接
2、B收到后对A说:我知道你没有消息了
3、B又发了个消息说:我也没有消息了
4、A收到后对B说:我知道你没有消息了,可以断开了

之后,TCP就断开了连接。注意,B收到A的消息后只是说告诉A知道A没有消息了,不代表B也没有消息。

在网络中,移动网络并不属于Internet,而在运营商的内网,并不具备真正的公网IP。所以移动网络和外界是通过:移动网络到运营商,然后再从运营商再到外界交流,这就是所谓的长连接。

那为什么要长连接呢?我们知道TCP连接的关闭是我们主动关闭的,而在长连接中,当某个TCP连接在一段时间不通信之后,网关会处于网络性能考虑而关闭这条TCP连接和公网的连接通道,导致这个TCP端口不再能收到外界通信消息,这就是TCP连接被动断开。

关于TCP断开中第二次和第三次为什么不合并

在第二次B得到A没有消息发后,为什么不等到B没有没有消息发了再一次告诉A,B也没有消息了?

其实真正的事实是:TCP是支持第二次和第三次进行合并的,即把这两条消息合进一条里发送,本质上,TCP的四次挥手只是因为在通信时候出现一方讲完了,另一方还没讲完的情况,所以TCP要给两方都有一个表达自己讲完了的机会,所以本质上TCP的四次挥手其实是一对两次挥手。总结下,这两条消息不是不能合并,而是能不合并,因为会有大量拆开使用的场景,至于合并这个方案,TCP是支持的。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352

推荐阅读更多精彩内容