网络基础知识

本文从开发者的角度,从底层往上层进行五层模型的概述。文章底部附一张x-mind结构图,从上层往底层进行概述。

网络通信概述

网络通信的实质就是:交换网络数据包。

数据包的结构:以太网标头-IP标头-TCP标头-应用层数据包

数据包能正常交换条件:本端及对端的MAC地址和IP地址

上网设置必要条件:

  1. 本机IP地址
  2. 子网掩码
  3. 网关IP地址
  4. DNS的IP地址

因为MAC有局限性,若不是在同个子网环境,无法知道对方的MAC地址,就需要网关转发

  • 同一子网络,需要知道对方的MAC地址及对方的IP地址
  • 非同一子网络,需要知道本端的网关MAC地址及对方的IP地址

物理层(实体层)

物理层是把电脑连接起来的物理手段,主要规定了网络的一些电气特性。基于电气特性发送高低电压(电信号),高电压对应数字“1”,低电压对应数字“0”

常见物理设备有:中继线、双绞线、集线器。

数据链路层

定义电信号“0”,“1”的分组方式,每组电信号是什么意思

常见物理设备

网卡、网桥

以太网协议

一组电信号构成一个数据包,叫做“帧”,每一帧分成两个部分:标头(Head)和数据(Data)。

“标头”包含数据包的一些说明项,例如发送者及源地址、接受者及目标地址、数据类型等。“数据”则是数据包的具体内容

"标头"长度固定18字节,“数据”长度最低46字节。最长1500字节。

所以,整个“帧”最低64字节。最长1518字节。如果数据很长,必须分割成多个帧进行发送(因为分帧后,多个被分割的数据包能不能按序号重新排序拼接,组成完成的原信息,后续会介绍到TCP和UDP协议)

MAC地址

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

image

每块网卡出厂时,都有一个独一无二的MAC地址,长度是48个二进制位,通常用12个十六进制数表示

举个栗子: 00-B0-D0-86-BB-F7
前6个十六进制数是厂商编号,后六个是该厂商的网卡流水号

广播(同一广播域内)

接下来又有几个问题:

1.一块网卡怎么知道另外一块网卡的MAC地址?

2.系统怎么才能吧数据包准确送到接送方?

首先通过ARP协议,可以知道另一块网卡的MAC地址(不详细说明)
其次,因为数据包的Head中含有接收方的MAC地址,所有以太网采用很原始的方式:向本网络内所有 计算机发送数据包,让每台计算机自己判断,自己是否是接收方。这种发送方式就是“广播”。

数据包格式

网络层

由上述的“广播”方式可知,以太网采用广播方式发送数据包,不仅效率低。而且局限在发送者所在的子网络。
所以接下来要区分哪些MAC地址属于同个子网络,那些不是。

如果是同个子网络采用广播方式发送,否则就采用“路由”方式发送。

这就导致了“网络层”的诞生。他的作用是引进一套新的地址,使我们能区分不同的计算机是否属于同个子网络,这套地址就是“网络地址”,简称“网址”。

网络层的功能即建立主机到主机通信

常见物理设备

路由器、三层交换机

IP协议

规定网络地址的协议,即IP协议。他所定义的地址,被称为IP地址。

作用:1. 为每台计算机分配IP地址;2. 确定哪些地址属于同个网络。

目前广泛采用的是IP协议第四版,简称IPv4。IPv4规定网络地址由32个二进制位组成,习惯用四段十进制表示IP地址,从0.0.0.0 到255.255.255.255。

IPv4地址

互联网上每台计算机会被分配到一个IP地址。地址分为两部分,前部分代表网络,后部分代表主机。那么如果从IP地址,判断两台计算机是否属于同一子网络?这时候需要另外一个参数子网掩码

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

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

举个栗子:已知IP地址172.16.254.1和172.16.254.233的子网掩码都是255.255.255.0,请问它们是否在同一个子网络?

两者与子网掩码分别进行AND运算,结果都是172.16.254.0,因此它们在同一个子网络。

IP数据包

根据IP协议发送的数据就叫IP数据包。IP数据包分为“标头”和“数据”两个部分

IP数据包的“标头”长度为20 ~ 60字节,整个数据包做大为65535字节。

如何在以太网协议中传递IP数据包?

把IP数据包把IP数据包直接放在以太网数据包的“数据”部分,无需修改以太网的规格。数据结构就变为:

以太网标头-IP标头-数据

传输层

由网络层协议可知,互联网上任意两台主机可以建立通信,但是同个主机上运行了多个程序,当一个数据包从互联网上发来时,怎么知道这个数据包对应是哪个程序上使用?

这时候必须引入端口,它实际是每一个使用网卡的程序的编号。每个数据包都发到主机的特定端口,所以不同的程序就能取到自己所需要的数据。

端口是0 ~ 65535之间的整数,0 ~1023的端口被系统占用,用户只能使用>1023的端口。
当启用某个应用程序时,若没有指定某个固定端口(例如NodeJs可以指定常用端口),程序会随机随机选用一个端口,然后和服务器对应端口联系。

所以传输层的功能:网络中的数据包发到接收方对应的哪个程序中,即端口到端口的通信

常见物理设备

四层交换机、四层路由器

UDP协议 和 TCP协议

数据包中加入端口信息,就需要新的协议

UDP协议

UDP数据包由“标头”和“数据”两部分组成,“标头”部分包含接收端口和发出端口,“数据”部分就是具体的内容。

UDP标头一共8个字节,总长度不超过65535字节,正好放进一个IP数据包。

把整个UDP包放入IP数据包的“数据”部分。整个IP数据包又放在以太网数据包的“数据”部分,最后形成的数据包格式:以太网标头-IP标头-UDP标头-数据

特点:网路中UDP数据包一旦发出,无法知道对方是否收到,不进行确定。容易实现但是网络可靠性低

TCP协议

TCP协议可近似认为,它就是有确认机制的UDP协议,每发出一个数据包都要求确认。如果有一个数据包遗失,就收不到确认,发出方就知道有必要重发这个数据包

特点:能够确保数据不会遗失。它的缺点是过程复杂、实现困难、消耗较多的资源。

TCP数据包和UDP数据包一样,都是内嵌在IP数据包的"数据"部分。TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。

TCP报文:

image

TCP三次握手四次挥手


TCP三次握手四次挥手

应用层

规定应用程序的数据格式,以太网数据包:(以太网标头-IP标头-TCP标头-应用层数据包)

举个栗子:TCP协议可以为各种程序传递数据,比如网页、FTP、Email数据,应用程序接收到传输层的数据,需要对其进行解读,那么,必须要有不同的协议规定网页、FTP、Email各自不同的格式。这些应用程序协议就构成了应用层。

文末加个X-mind结构图
image

本文参考博客:

http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html
http://www.ruanyifeng.com/blog/2012/06/internet_protocol_suite_part_ii.html

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

推荐阅读更多精彩内容

  • 简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者...
    JasonShi6306421阅读 1,226评论 0 1
  • 文章首发于个人blog欢迎指正补充,可联系lionsom_lin@qq.com原文地址:《网络是怎样连接的》阅读整...
    lionsom_lin阅读 14,107评论 6 31
  • 简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者...
    保川阅读 5,941评论 1 13
  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 5,051评论 0 8
  • 话说两台电脑要通讯就必须遵守共同的规则,就好比两个人要沟通就必须使用共同的语言一样。一个只懂英语的人,和一个只懂中...
    哲逗年阅读 888评论 0 0