计算机网络TCP/IP等相关协议与原理

网络分层(由下到上):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。

重点在: 物理层、数据链路层(这两层需要了解基本的原理)、网络层、传输层(这两层需要了解功能作用,原理和相关的一些协议)、应用层(http协议)。

开始之前先跟大家说一下协议,很多人不知道协议是什么,尤其是刚接触这方面东西的时候,一听协议,感觉很吊的样子,但是又不知其所云,其实,协议可以理解为:一个双方通信需要共同遵守的规范。

记住,在网络分层协议中,所有下层的协议的作用就是为了上层服务,谨记!

接下来,我跟大家一一道来,首先登场的是物理层。

一.物理层

作用:比特流与电子信号的转换。例如光纤通过光的亮与灭的形式进行传递,进而转换为比特流。

这一层主要就是跟硬件打交道,这一层也是所有上层的基础。

二.数据链路层

作用:通过介质相互连接设备之间数据传输规范。

数据链路层强调的是一种传输规范,这是指什么呢?说白了,就是指每次传输的最大容量(最大传输单元),数据组织结构(以太网帧的概念)、传输的目的地等。

MAC地址:烧录在网卡ROM中的一串数字,长度48bit。

分组交换:较大数组分割为较小数组,依次发送。
原因是数据链路层有不定长度的最大传输单元。

以太网的帧的概念:前导码(8字节)+本体(首部+数据+FCS)

以太网帧.png

交换机:在数据链路层工作的网络设备。

原理:依靠MAC地址决定向哪个端发送数据,需要“转发表”。
转发表是交换机自动学习得到的。

三.网络层(拿IP协议举例)

作用:保证不同数据链路层下数据的可达性。

ARP协议(获取MAC地址)和ICMP协议(数据发送异常通知)

作用:识别对端信息的地址。地址为32位正整数表示,分为四个部分,每个部分由8位整数组成。说白了,是识别要传输目的地的地址。
每位对应十进制范围:0-255。

IP地址:网络标识(区分网段)+主机标识(区分同一网段下的主机)

[注]:网络标识和主机标识是为了寻址而发明。

IP分类:A类、B类、C类、D类。

A类:
第一位为“0”的地址,前8位为网络标识,0.0.0.0-127.0.0.0是A类IP地址的理论范围。
B类:
前两位为“10”的地址,前16位是网络标识,128.0.0.0-191.255.0.0,主机标识16位。
C类:
前三位为“110”的地址。前24位网络标识,192.0.0.0-223.255.255.0,主机标识为8位。
D类:
前4位为“1110”的地址。网络标识为32位,没有主机标识。

子网掩码:

IP地址长度仅可表达43亿左右的主机数目,(区分网络标识和主机标识)共32位(一段连续的0和一段连续的1)组成,1的长度就表示网络标识的长度。

子网掩码的作用是区分IP地址是否在同一子网内。

路由控制:

分组数据发送到目标地址的功能,持有路由控制表,它在路由控制表中查找目标IP地址对应的下一个路由器地址。

源主机--->网卡--->路由器1(路由器控制表)--->路由器2--->网卡--->目标主机

IP报文分割重组(分片、重组)

IP协议最大包为2的16次幂,等于65536.

接下来介绍几个IP协议相关的协议或技术:

DNS解析:

将域名转化为IP地址(域名也是分层处理请求的,每一层都有对应的DNS服务器)。

ARP技术(类似一种广播):

通过目标IP地址,定位下一个接收数据包的网络设备(主机或路由器)的MAC地址。

在数据链路层发送广播,如果没有ARP技术,就没有办法穿透中间的服务器(ARP请求+ARP应答)。

NAT和NAPT技术

NAT:用于将局域网中的私有地址转换为全局IP地址的技术。
每个路由器只有一个对外的全局IP地址,如果一个内网主机都向外通讯,怎么办?
就要使用到NATP技术,可转为TCP和UDP端口号。
不同的内网IP被转换成同一个公共的IP,但是NAPT技术可以使用不同的端口加以区分。

NAT和NAPT都需要路由器内部维护一张转换表。

举例:TCP首次SYN时,会生成这个表,关闭连接时会发出FIN包,收到这个包应答时转换表会被删除。

四.传输层

TCP和UDP

定义:实现应用程序之间的通信。
TCP:面向有连接的协议,建立连接需要3步,关闭连接需要4步。
具备数据重传、流量控制等功能,能正确处理丢包功能并有效利用宽带。
UDP:比较适合做实时视频和音频,效率比TCP高。

TCP有5个要素:源IP地址、目标IP地址、源端口号、目标端口号、协议号,同一台机器的端口号可以区分为不同的应用程序。

UDP首部:

UDP首部
UDP首部

校验和=源IP地址(IP协议首部)+目标IP地址(IP协议首部)+源端口+目标端口

包长度=首部长度+数据长度

TCP首部:

应该可以从下图看出来,TCP的首部比UDP的首部要复杂的多,所以也一定会影响的传输的速度和效率。

TCP首部
TCP首部

简单介绍一下首部的相关参数:

序列号:发送数据的位置
确认应答号:下一次应用接收到的数据的序列号
数据偏移:TCP首部的长度,单位为4字节。
控制位:长度为8位。
窗口大小:用于表示从应答号开始能够接受多少个8位字节。
紧急指针:尽在URG控制位为1时有效,表示紧急数据的末尾在TCP数据部分中的位置。

接下来最重要的一个技术点来了:

TCP握手

TCP首部
TCP首部

以下是通俗话解释连接和断开过程:
建立连接的过程:
1.client:我要建立连接。
2.server:我知道你要建立连接了,我这边没问题。
3.client:我了解你知道我要建立连接了,开始通信吧!

结束连接的过程:
1.client:我要关闭连接了
2.server:你那边可以关闭了
3.server:我这边也准备关闭了
4.client:我已关闭,你可以关闭了

[注]:连接是双方面的,所以关闭也是要自行关闭的。

TCP丢包和重发机制

数据包重发:保证ACK的值和发送方下次发送数据包的序列号相等。

TCP数据包重发.png

接收方通过TCP首部中的控制位SYN判断这个数据是否曾经接收过?接收过就会舍弃。
重传超时时间(RTO)动态改变,略大于连接往返时间(RTT),RTO有自己的估算公式

TCP窗口:

定义:无需等待ACK,可以发送的最大数量。(窗口大小由接收端控制)
作用:为了解决发送数据包后,直至ACK确认返回之前,发送端都无法在进行发送的问题。

流量控制:

定义:接收端有缓存区数据溢出(如果窗口较大)
通俗一点的意思就是让发送方慢一点,免得接收方接收不过来。

慢启动:

TCP会慢启动算法得出窗口的大小,对发送数据量进行控制。
发送方拥有一个拥塞窗口,对发送的数据量进行控制。
TCP协议中的窗口是指:发送方和接收方窗口中的最小值。

慢启动过程:

1.通讯开始,发送方窗口为1。每收到一个ACK确认后,拥塞窗口翻倍。
2.由于指数级增长快,很快就会出现确认包超时。
3.设置慢启动阈值,它的值为拥塞窗口的大小的一半。
4.将拥塞窗口大小设置为1,重新进入慢启动过程。
5.慢启动阈值存在,当拥塞窗口大小达到阈值时,不再翻倍,而是线性增长。
6.随窗口大小的不断增长,可以收到三次重复的ACK,进入“快速重发”阶段。
7.TCp将慢启动阈值设置为当前拥塞窗大小的一半,再将拥塞窗口大小设成阈值大小。
8.拥塞窗口又会线性增加,直至下一次出现3次ACK或者超时。

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

推荐阅读更多精彩内容