网络传输之TCP/IP协议族

我们现实网络无处不在,我们被庞大的虚拟网络包围,但我们却对它是怎样把我们的信息传递并实现通信的,我们并没有了解过,那么当我们在浏览器中出入一段地址,按下回车这背后都会发生什么?
比如说一般场景下,客户机和服务器不在一个局域网,输入的是一个域名而不是IP地址。那么当按下回车后,首先浏览器会通过DNS解析找到我们对应的IP地址,将http报文发送给目标IP地址对应的服务器,之后服务器做出响应,将请求的资源发送给浏览器。
TIP/IP在这当中扮演着重要的作用。

TCP/IP历史

在计算机发展的早期阶段,很多不同的厂商生产各种不同的计算型号,他们运行完全不同的操作系统,为了让他们之间能够相互通信,TCP/IP协议族诞生了。

那么为什么我们叫它协议族呢? 因为实际上TCP/IP是一组不同层次上的多个协议的组合。
那么协议组合是什么?——TCP/IP模型

TCP/IP模型

TCP/IP模型是一个四层结构,从上往下依次是应用层,运输层(传输层),网络层,网络接口层(数据链路层)。
通过开头我们输入一个url的例子,自上而下进行介绍TIP/IP参考模型


应用层

为用户提供各种服务,比如我们浏览网页时用到的HTTP,收发邮件时用的SMTP,登录远程主机用的SSH或者FTP协议,DNS等协议。
假设我们对 www.xxx.com发送请求

  • 浏览器看到这个域名的时候,就好像去一家从没去过的餐厅吃饭,只知道餐厅名字,却不知道具体地址,域名就像是一个餐厅的名字,而IP地址相当于一个具体的地址。
    浏览器必须知道要请求服务器的IP地址,发出的请求才有目的地。DNS可以将IP转换成地址。
  • http 会生成报文 ,这个请求里面包含了请求的方法,请求的路径“/”,请求的主机名,客户机的类型以及一些其他的信息。

传输层

传输层位于应用层下层,网络借口层的上层,主要有TCP和UDP两种协议。
UDP是用户数据报协议,不关心是否收到,不需要建立连接就可以通信,传输效率高,比如说微信。
而TCP是一种可靠的面向连接的协议,就是在交互数据前先建立一个TCP连接,如同打电话,首先要拨号,然后等待对方响应后才能彼此交流
TCP提供全双工服务,即数据可在同一时间双向传播
TCP将若干个字节构成一个分组,此分组称为报文段(Segment)


TCP连接的建立过程如下图所示。

  • 三次握手
    • 主机A通过一个标识为SYN标识位的数据段发送给主机B请求连接,告诉主机B“我想和你创建一条TCP连接”。
    • 当主机B收到SYN请求后,如果其所请求的端口号正在等待连接,则会为这一条TCP连接分配资源,并主机A发送确认应答ACK和同步序列号SYNC标志位的数据段来响应主机。
    • 主机A确认收到了主机B的数据段并可以开始传输实际数据。
  • 四次挥手
    • 主机A发送FIN控制位发出断开连接的请求 。
    • 主机B进行响应,确认收到断开连接请求。
    • 主机B发送FIN控制,随后关闭了连接。
    • 主机A收到之后,又向主机B回复一个ACK应答。过了一段计时等待,主机A也关闭了连接,释放资源。这一段计时等待的时间是为了主机B重传最后的ACK防止其丢失。

网络层

在这一层中主要是 IP 协议处理数据传输。用于把数据从源主机经过若干个中间节点传送到目标主机,并向传输层提供最基础的数据传输服务。

在网络中,每台计算机都有一个唯一的地址,方便别人找到它,这个地址称为IP地址。

IP协议处理过的数据拥有自己的名字:IP数据报,让我们从下图来了解一下IP数据报的格式:
  • 版本
    • 一个4位二进制数的标识,用来标识IP协议的版本,目前大部分的协议版本号为4,因此IP有时也称为IPv4。
  • 首部长部
  • 优先级与服务类型
  • 总长度
    • 该字段用以指示整个IP数据包的长度,最长为65535字节,包括头和数据
      标识符
    • 唯一标识主机发送的每一份数据报
  • 标志
    • 分为3个字段,依次为保留位、不分片位和更多片位,保留位:一般被置为0
      不分片位:表示该数据报是否被分片,如果被置为1,则不能对数据报进行分片,如果要对其进行分片处理,就应将其置为0
      更多片位:除了最后一个分片,其他每个组成数据报的片都要将该位置设置为1.
  • 段偏移量
    • 该分片相对于原始数据报开始处位置的偏移量
  • TTL(Time to Live生存时间)
    • 该字段用于表示IP数据包的生命周期,可以防止一个数据包在网络中无限循环地发下去。TTL的意思是一个数据包在被丢弃之前在网络中的最大周转时间。该数据包经过的每一个路由器都会检查该字段中的值,当TTL的值为0时此数据包会被丢弃。TTL对应于一个数据包通过路由器的数目,一个数据包每经过一个路由器,TTL将减去1。
  • 协议号
    • 用以指示IP数据包中封装的是哪个协议
  • 首部校验和
    • 检验和是16位的错误检测字段。目的主机和网络中的每个网关都要重新计算报头的校验和,一样表示没有改动过。
  • 源IP地址
    • 该字段用于表示数据包的源地址,指的是发送该数据包的设备的网络地址
  • 目标IP地址
    • 该字段用于表示数据包的目标的地址,指的是接收节点的网络地址

数据链路层

在这一层中,上层传来的数据经过协议处理后的一份数据,我们称之为一帧(Frame)
在链路层中的地址指的的是计算机中网卡的硬件地址,即mac地址。我们知道,每一个网卡在出厂时,其内部都存有一个全世界独一无二的硬件标识,称为mac地址,它是的长度为6个字节。在网络中,两个计算机之间的通信实际上就是计算机中的两张网卡之间的通信。如果没有mac地址,就无法得知通信的具体位置,因此获取mac地址是计算机通信的基础保障。

但是实际上,计算机程序在发送连接请求时,一般只知道目的主机的IP地址,那么mac地址是如何获取的呢?这就要靠ARP协议来实现。

ARP协议(地址解析协议)可以看做是链路层的一个协议,它的作用是为IP地址与对应的mac地址之间提供动态的映射,这个过程是自动完成的,因此无需用户或管理员关心。ARP协议将IP映射为mac地址的过程大致如下:

如果目的主机与源主机位于同一网段,那么ARP协议会向本网段发送一个广播,网段中的所有主机都会受到一条消息,这条消息询问哪台主机的IP地址与目的主机地址相同。当目的主机接受到这条消息,就做出应答,将自己的mac地址发送过去。其他主机则将这条消息忽略。

如果目的主机与源主机位于不同网段,那么ARP协议会将消息发送给本地的路由,路由经过IP寻址找到目的主机所在网段的路由,再由目的路由将消息广播出去,获得目的主机响应后再返回给源主机。

一般来说, 每台机器都维护的有一个ARP缓存表, 存储了近期的IP地址和硬件地址的映射关系, 可以用 arp -a 命令来查看缓存表中内容。

总结

事实上当我们http访问一个地址的时候,从应用层开始向下传递,没经过一层,该层的协议会把上层传递的数据在这个基础上加一个首部,该首部包含了该层协议管理的信息,比如说网络层会打包IP信息,数据链路层打包mac地址。
通过这种层层打包的方式,最后由物理层传递出去,再有路由器,代理服务器等设备,交给目标计算机。
目标计算机得到传递过来的数据后,从物理层向上传递,每一层会将该层对应协议负责的首部摘除后再传给上层。最后抵达应用层对应的某个应用程序。

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

推荐阅读更多精彩内容

  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 13,033评论 6 174
  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 5,049评论 0 8
  • 同样的,本文篇幅也比较长,先来一张思维导图,带大家过一遍。 一、 计算机网络体系结构分层 二、 TCP/IP 基础...
    涤生_Woo阅读 64,867评论 38 1,038
  • 地址解析协议ARP 物理这一级,主机和路由器是用物理地址来区别的。物理地址是一个本地地址,管辖范围是本地网络,所以...
    顾慎为阅读 1,056评论 0 1
  • 协议基础 协议就是计算机之间通过网络实现通信时实现所达成的一种“约定”,这种约定使得那些由不同厂商的设备,不同的C...
    d9fc24a0c9a9阅读 2,347评论 0 6