【大话存储】学习笔记(11章),TCP/IP

TCP/IP协议

以太网的出现,给系统的互联带来方便的方式,每个节点安装一块以太网适配器,上层程序只要将发送的数据以及目的MAC地址告诉以太网卡,就可以完成通信过程。

但是实际上,以太网不能直接被应用程序用来收发数据的,因为以太网是一个没有传输保障的网络。

表现在:

  • 不会对数据帧进行校验纠错。
  • 如果交换量大,可能会出现缓冲区队列满了的情况,所以以太网会主动丢弃,并且不会通知发送者。

正因为如此 ,需要上层程序来获得可靠数据。

比如NetBEUI,NetBIOS,IPX,TCP/IP,这些协议其下层调用以太网提供的服务,上层对外提供新的调用接口。

而TCP/IP因为适用广,性能好,可以在超大规模的网络上运行,迅速得到普及。

IP协议

作用一:屏蔽链路层地址

以太网主要实现了OSI的下三层,即物理层、链路层、网络层,现在普遍认为以太网只作用到了链路层,这种误解的原因是以太网与TCP/IP结合就沦落为TCP/IP的链路层,其第三层地址被以太网IP所映射掉了。

而且以太网定义了MAC地址,也有自己的物理层,完全可以用来进行寻址。但是为什么没有完全靠MAC来寻址呢?因为

  • 首先MAC 太长,48bit,用于路由寻址的时效低。

  • 最关键的是,世界上不是每个环境都用以太网来建立网络,还可以有其他的网络系统,有其他的寻址方式。

比如以太网适合局域网通信,但是不适合广域网,一般来说广域网有专门的的联网协议,比如PPP , HDLC , FrameRelay , X25 , ATM等,它们也如以太网一样各有各的寻址体系。

在一个Internet上有如此多的不同类型的网络,如果要联通,需要各种转换,映射。所以最好才解决方案是给他们通通分配一个IP地址给每个节点,对外以IP地址作为寻址地址,再将IP地址映射到所在网络的地址上,比如IP映射到Frame Relay 的DLCI ,映射到ATM的地址等。

以太网天生的弱点导致它必须向TCP/IP合作,而且只能将MAC地址隐藏,对外通通使用IP地址。

总结一下,因为除了以太网以外,还有很多其他类型的联网方式,而几乎所有的联网方式都有自己的编址和寻址方式,为了兼容,只能将地址全都映射到IP地址上

既然有映射,当然需要一种协议来完成这个过程。那就是ARP协议,这个协议就是用来处理一种地址和另一种地址的映射。运行在每个网络设备上,将一种地址映射成底层网络设备所使用的另一种地址。

每种网络要想用IP来统一就必须运行各自的ARP协议,比如以太网的ARP , 帧中继的ARP。

ARP协议:主要用来将IP地址映射到底层设备的地址(MAC地址)

我们以浏览器中输入网络域名之后发生的事情来举例。

  • 首先DNS兑换程序自动向DNS服务器查询,获得域名对应的地址,然后用IP地址与服务器通信。

  • 数据包带着IP地址到了服务器所在的局域网,会通过局域网的路由器发出的ARP请求,将IP地址兑换为服务器所在局域网的地址,

  • 如果服务器所在的局域网是以太网,则对应成MAC地址,然后通过以太网交换设备,找到此MAC地址所在的交换机端口,将数据包发向这个端口。

上述过程发生了两种不同的兑换:

  • IP转换为域名,这是因为IP不方便记忆,所以我们平时使用类似"www.baid.com"这样的字符来表示网站,当然需要在后台将域名和IP进行相互转换。

  • MAC转换IP:为了统一。

作用二:适配上下层

IP层另外的作用是适配上下层:给链路层和传输层提供适配。

链路层有MTU的概念:链路的最大传输单元,即每帧所允许的最大字节数。

链路层就类似司机和交通规则,对货车的载重、大小有要求,如果货物太大,就必须分割。这个动作是由IP层程序来做,也就是IP根据链路的MTU来分割货物,然后贴上源目的IP地址、顺序号。

路由器每次选择的路径不一样,所以到达目的地以后可能乱序了,此时可以使用顺序号。这个顺序号是根据分割处相对起点的距离,根据这个号,等所有货物到达了以后,对方的IP程序可以将这个号码组装起来。

每个货物块都携带IP头,但是只有第一块携带TCP头部 。因为传输层头部是在应用数据之前的,所以IP在分割的时候,一定会把头部分到第一块中。

缺点

IP最大的作用是寻址和路由,以及适配链路层的MTU。但是以太网是个面向无连接的网络, 不保障数据一定会传送到对方。

Frame Relay协议,其前身X.25协议,有很好的传输保障功能,因为其设计初衷是为了运行在不稳定的链路,当链路的质量不断提升,x25的做法有些多余,所以在FR替代了X25,只留下流控机制。

但是以太网和FR都没有实现端到端的传输保障。端到端是相对于“过路”而言的。过路是指在两个终端之间通信路径上的网络设备之间的路径。链路层只保障两个设备之间传送的数据无误,但是不能保证最终终端传输的无误。

TCP和UDP

TCP/IP协议包含两个亚层:

  • IP:统一底层网络地址和寻址
  • TCP或者UDP:逻辑上位于IP上。

TCP和UDP的功能

  • TCP功能:维护复杂的状态机,保障发送方发出的数据包都会传送到接收方。出错的话,则反馈信息。

  • UDP功能:TCP/IP对以太网的透传。没有传输保障功能的亚层。除了UDP可以提供比以太网更方便的调用方式,其他没有本质区别。

TCP/IP协议向应用程序呈现的接口就是Socket接口,即插座接口。TCP/IP想让应用程序更方便的使用网络,就像插头插入插座一样。

基于TCP/IP的应用程序,必须依赖于TCP/IP协议,如Ping , Trace , SNMP,Telnet , SMTP,FTP,HTTP

这些协议加上IP、TCP等,然后加上物理层链路层(以太网等),形成了TCP/IP协议簇。

所以说TCP运行在终端上,监控终端最终发送的接收的数据包的顺序、缓存区、校验。


image.png

TCP协议

TCP就是个押运员,是由它把货物交给IP做调度的。

货物最初是由应用程序生成,调用Socket接口向接收方发送货物。通告TCP/IP去特定的内存区将数据复制到Socket缓冲区,然后TCP再从缓冲区将数据通过IP层分片之后,从底层网络适配器发送到对端。

TCP通过MSS(max Segment Size)来调整每次转给IP层的数据大小。而MSS值完全取决底层链路的MTU。

为了避免IP分片,MSS总等于MTU值减掉IP头,再减掉TCP头的值,TCP发送给IP的数据,IP加上IP头之后,恰好等于底层链路的MTU值,使得IP不需要分片。

TCP将上层应用的数据完全当成字节流,不进行定界处理,认为上层应用数据就是一连串的字节,不认识字节的具体含义,却可以分割这些字节,封装成货物进行传送,但是必须保证数据排列顺序。

TCP将上层数据“分段” , IP将TCP分段再“分片”(若此段大于MTU)
IP到达目的地以后,会将分片合并为分端,然后放到货仓,顺序排放,不管上层消息的分界

UDP协议

UDP只是被动的起到了一个IP和上三层的接口的作用。

没有出错重传,没有缓冲、定时器、状态机,而且也不会像TCP将数据流分段,适配MTU的工作完全由IP来做。

没有握手机制,所以UDP头部只有8个字节长,包括目的和源端口号,UDP数据包长度、UDP校验和,效率高。所以UDP协议一般用于实时性高的地方,比如视频流

端口号

OS上运行N个程序,如果需要通信,可以使用号码来标识,所以只要知道了进程号就可以区分程序。

同一PC上的程序通信,一般是在内存中直接通信,但是如果两台计算机的两个程序都需要通信,若用内存共享,成本太高,所以可以采用先发送到另一台计算机,然后让接收消息的计算机将这个消息发送给对应的程序。

所以接收方的OS中的TCP/IP协议必须知道某个数据包应该放到哪一个应用程序的缓冲区,因为同一时刻可能有多个应用调用Socket 进行数据收发。

为了区分正在调用Socket的不同应用程序,规定了端口号

所以在调用socket的时候,必须声明连接目的计算机TCP/IP协议的那个端口号。

TCP/IP与以太网的关系

有人把TCP/IP与以太网等同起来,是完全错误的。

TCP/IP与以太网是互相利用,而非相互依存。

TCP/IP协议不像以太网有底层专门的硬件,绝对是可以租用一切合适的硬件来作为物理和链路层。

比如TCP/IP可以用无线、USB、COM串口、ATM作为物理层和链路层。

以太网有自己的网络层编址和寻址,有网络层的元素

TCP/IP在网络层和传输层的功能应用太广泛了,所以OSI的第三和第4层几乎是被TCP/IP统治了。

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

推荐阅读更多精彩内容

  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 13,060评论 6 174
  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 5,053评论 0 8
  • 协议基础 协议就是计算机之间通过网络实现通信时实现所达成的一种“约定”,这种约定使得那些由不同厂商的设备,不同的C...
    d9fc24a0c9a9阅读 2,359评论 0 6
  • 同样的,本文篇幅也比较长,先来一张思维导图,带大家过一遍。 一、 计算机网络体系结构分层 二、 TCP/IP 基础...
    涤生_Woo阅读 65,023评论 38 1,038
  • TCP/IP概述 TCP/IP起源于1969年美国国防部(DOD:The United States Depart...
    zhf_Zachariah阅读 5,662评论 6 114