网络协议

互联网协议

本文只为了自己记录,加深理解,原文请看阮一峰老师的http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html

N层通信模型

我在北京发了一条QQ消息,为何隔了半个地球,在洛杉矶朋友能够收到,这就是互联网通信.对于我和洛杉矶的朋友来说,我们接触到的只是QQ这个应用程序,但是真实的数据是转化成0101发出去/接收到的,这就是应用-->二进制-->通信-->二进制-->应用的传输过程.

相比osi7层模型,tcp/ip 4层模型,我更喜欢阮一峰老师的五层模型图:


enter image description here

第一层 - 物理层

它就是把电脑连接起来的物理手段,作用是负责传送0和1的电信号。例如:光纤,电缆

这就叫做"物理层",它就是把电脑连接起来的物理手段。它主要规定了网络的一些电气特性,作用是负责传送0和1的电信号。

第二层 - 数据链路层 - mac地址到mac地址

1.为何需要这层

单纯的0和1没有任何意义,必须规定解读方式:多少个电信号算一组?每个信号位有何意义?一种叫做"以太网"(Ethernet)的协议规定,一组电信号构成一个数据包,叫做"帧"(Frame)。

这就是"数据链路层"的功能,它在"物理层"的上方,确定了0和1的分组方式。

2.帧的具体构成

每一帧分成两个部分:标头(Head)和数据(Data)。


enter image description here

"标头"包含数据包的一些说明项,比如发送者、接受者、数据类型等等;"数据"则是数据包的具体内容。

"标头"的长度,固定为18字节。"数据"的长度,最短为46字节,最长为1500字节。因此,整个"帧"最短为64字节,最长为1518字节。如果数据很长,就必须分割成多个帧进行发送。

3.mac地址(网卡地址)

A.mac地址用来作为接受/发送数据的唯一标识

以太网规定,连入网络的所有设备,都必须具有"网卡"接口。数据包必须是从一块网卡,传送到另一块网卡。网卡的地址,就是数据包的发送地址和接收地址,这叫做MAC地址

0和1组成的电信号分组,通过mac地址到mac地址的方式传输

B.mac地址
enter image description here

每块网卡出厂的时候,都有一个全世界独一无二(同一个厂商才唯一)的MAC地址,长度是48个二进制位,通常用12个十六进制数表示。

PS:MAC地址可不是世界上独一无二的,只是其散列足够大,使得在同一个子网中MAC地址碰巧相同的两块网卡几率很小很小而已。

4.怎么发送数据出去--广播

首先,需要知道对方的mac地址才能向对方发送数据包,这由ARP协议来解决

Q : 知道了地址之后,怎么发送给对方
A : 用广播的方式发给所有网络里的网卡(mac地址),接收方根据帧的head里面标识的接收方mac地址是否等于自己来判断,一致就接收数据,不一致就抛掉数据


enter image description here

比如,1号给2,3,4,5都发了数据,但是帧head的接收方mac地址和2一致,所以3,4,5都抛弃了,只有2接受并处理了数据.这个就叫广播

新方法 缓存MAC地址

老式的的集线器(市面上已经不存在了)才是这种广播模式,现在交换机会记录并缓存各个交换机端口连接的设备的MAC地址,转发包时会按缓存的地址表转发到特定的交换机端口,除非地址表里面没有目的MAC地址,不然不会广播包的。

第三层 - 网络层 - IP到IP

1.网络层的由来

原因

mac地址能过广播的方式,给当前同一个子网络下的所有计算机发送了数据包,但是缺点是每一台计算机都会收到一次包,并且广播不能传播到其他子网络去,否则互联网上每一台计算机都会收到所有包,那会引起灾难。

作用

网络层的作用是引进一套新的地址,使得我们能够区分不同的计算机是否属于同一个子网络。这套地址就叫做"网络地址",简称"网址".

MAC地址 + 网址

每台计算机有了两种地址,一种是MAC地址,另一种是网络地址。两种地址之间没有任何联系,MAC地址是绑定在网卡上的,网络地址则是管理员分配的,它们只是随机组合在一起。网络地址帮助我们确定计算机所在的子网络,MAC地址则将数据包送到该子网络中的目标网卡。

2.IP协议

规定网络地址的协议,叫做IP协议。作用主要有两个,一个是为每一台计算机分配IP地址,另一个是确定哪些地址在同一个子网络(通过子网掩码)。

它所定义的地址,就被称为IP地址。

IPv4

目前,广泛采用的是IP协议第四版,简称IPv4。这个版本规定,网络地址由32个二进制位组成。

IPv6 的诞生

(1)更大的地址空间
IPv4中规定IP地址长度为32,即有232-1个地址,也就是最多有2的32次方的电脑可以联到Internet上;而IPv6中IP地址的长度为128,即有2128-1个地`址。整个地球的每平方米面积上仍可分配1000多个地址

(2)更小的路由表
IPv6的地址分配一开始就遵循聚类(Aggregation)的原则,这使得路由器能在路由表中用一条记录(Entry)表示一片子网,大大减小了路由器中路由表的长度,提高了路由器转发数据包的速度。 增强的组播(Multicast)支持以及对流的支持(Flow-control)。

(3)对DHCP协议的改进和扩展
使得网络(尤其是局域网)的管理更加方便和快捷.

(4)更高的安全性
在使用IPv6网络中用户可以对网络层的数据进行加密并对IP报文进行校验,这极大的增强了网络安全

子网掩码

子网掩码,就是表示子网络特征的一个参数。就是掩去主机部分,保留网络部分

它在形式上等同于IP地址,也是一个32位二进制数字,它的网络部分全部为1,主机部分全部为0。如果已知网络部分是前24位,主机部分是后8位,那么子网络掩码就是11111111.11111111.11111111.00000000,写成十进制就是255.255.255.0

知道"子网掩码",我们就能判断,任意两个IP地址是否处在同一个子网络。方法是将两个IP地址与子网掩码分别进行AND运算(两个数位都为1,运算结果为1,否则为0),然后比较结果是否相同,如果是的话,就表明它们在同一个子网络中,否则就不是。

IP地址与子网掩码进行“按位与”运算,得到网络地址。

例如:
第一个IP地址的网络地址:172.16.254.233
换算成二进制格式: 10101100 00010000 11111110 11101001
掩码地址255.255.255.0 换算成二进制格式: 11111111 11111111 11111111 00000000
你把它们逐位进行&运算, 就可以将最后的8位全部变为0, 而前24位数字不变. 得到10101100 00010000 11111110 00000000, 即172.16.254.0

第二个IP地址的网络地址:172. 16.254.233& 255.255.255.0 = 172. 16.254.0

一致,所以是同一个子网络

3.IP数据包

以太网协议每一个数据包包含"标头"和data,ip数据包则是将以太网数据包的data进一步分成"标头"和data.

"标头"部分主要包括版本、长度、IP地址等信息,"数据"部分则是IP数据包的具体内容。


enter image description here

4.ARP协议

也就是在同一个子网络中发一个特殊包,该包包含目的IP地址,所有子网络下的计算机收到包后,拿出其中的ip和本机ip对比,一致的话就将自己的mac地址包成一个包,发给询问计算机.不一致就抛弃.

所以有了IP地址,可以将数据发给同一个网络的任何一台计算机.

第四层 - 传输层 - 端口到端口

1.由来

Q : 同一台主机上有许多程序都需要用到网络,比如,你一边浏览网页,一边与朋友在线聊天。当一个数据包从互联网上发来的时候,你怎么知道,它是表示网页的内容,还是表示在线聊天的内容?

A : 通过监听不同端口

端口

端口是每一个使用网卡的程序的编号。每个数据包都发到主机的特定端口,所以不同的程序就能取到自己所需要的数据。

"端口"是0到65535之间的一个整数,正好16个二进制位。0到1023的端口被系统占用,用户只能选用大于1023的端口。任何一个应用程序都会随机选用一个端口,然后与服务器的相应端口联系。

"传输层"的功能,就是建立"端口到端口"的通信。相比之下,"网络层"的功能是建立"主机到主机"的通信。只要确定主机和端口,我们就能实现程序之间的交流。

socket

Unix系统就把主机+端口,叫做"套接字"(socket)。

2.UDP协议

现在,我们必须在数据包中加入端口信息,UDP数据包,也是由"标头"和"数据"两部分组成。

"标头"部分主要定义了发出端口和接收端口,"数据"部分就是具体的内容。然后,把整个UDP数据包放入IP数据包的"数据"部分,这时整个数据包如下


enter image description here

3.TCP协议

UDP协议的缺点是不知道对方是否收到了数据,为了提高准确性,诞生了TCP。

这个协议可以近似认为,它就是有确认机制的UDP协议,但是过程复杂、实现困难、消耗较多的资源,每发出一个数据包都要求确认。如果有一个数据包遗失,就收不到确认,发出方就知道有必要重发这个数据包了。

第五层 - 应用层 - 应用程序到应用程序

"应用层"的作用,就是规定应用程序的数据格式。

举例来说,TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了应用层

这是最高的一层,直接面对用户。它的数据就放在TCP数据包的"数据"部分。因此,现在的以太网的数据包就变成下面这样。

enter image description here

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

推荐阅读更多精彩内容