计算机网络是考研的重点,也是日后工作最基本的知识点之一。本博文详细的总结了计算机网络的基础知识,方便日常查看和复习,希望有所帮助。
视频学习链接:https://www.bilibili.com/video/BV19E411D78Q

目录

  • 第四章 网络层
    • 4.1 数据交换方式
      • 4.1.1 电路交换
      • 4.1.2 报文交换
      • 4.1.3 分组交换
    • 4.2 路由算法
    • 4.3 分层次的路由选择
    • 4.4 IP数据报格式
    • 4.4 IPv4地址
    • 4.5 网络地址交换NAT
    • 4.6 子网划分和子网掩码
    • 4.7 无分类编址CIDR
    • 4.8 ARP协议(IP地址与Mac地址的映射)
    • 4.9 DHCP协议(动态主机配置协议)
    • 4.10 ICMP协议/网际控制报文协议(为了更有效转发IP数据报和提高交付成功的机会)
      • 4.10.1 ICMP差错报告报文(5种)
      • 4.10.2 ICMP询问报文
    • 4.11 IPv6
    • 4.12 RIP协议及距离向量算法
    • 4.13 OSPF协议及链路状态算法
    • 4.14 BGP(Border Gateway Protocol 边界网关协议)
    • 4.15 IP组播
    • 4.16 IGMP协议与组播路由选择协议
      • 4.16.1 网际组管理协议IGMP
      • 4.16.2 组播路由选择协议
    • 4.17 移动IP
    • 4.18 网络层设备
  • 第五章 传输层
    • 5.1 传输层的寻址与端口
    • 5.2 UDP协议:用户数据报协议
    • 5.3 TCP协议
      • 5.3.1 TCP连接管理
      • 5.3.2 TCP可靠传输
      • 5.3.2 TCP流量控制
      • 5.3.3 TCP拥塞控制
  • 6、应用层
    • 6.1 域名解析系统:DNS系统
    • 6.2 文件传输协议FTP
    • 6.3 电子邮件
      • 6.3.1 简单邮件传送协议 SMTP
      • 6.3.2 通用因特网邮件扩充MIME
      • 6.3.3 邮局协议POP3&网际报文存取协议 IMAP
      • 6.3.4 基于万维网的电子邮件
    • 6.4 万维网和HTTP协议
      • 6.4.1 超文本传输协议 HTTP

第四章 网络层

主要任务是把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务

功能

  • 路由选择与分组转发(最佳路径)
  • 异构网络互连
  • 拥塞控制
    • 开环控制(静)
    • 闭环控制(动)

4.1 数据交换方式

  • 电路交换
  • 报文交换
  • 分组交换
    • 数据报方式
    • 虚电路方式

4.1.1 电路交换

eg.电话网络

4.1.2 报文交换

优点:

  • 无需建立连接
  • 存储转发,动态分配线路
  • 线路可靠性较高
  • 线路利用率高
  • 多目标服务

缺点:

  • 有存储转发时延
  • 报文大小不定,需要网络节点,有较大的存储空间

4.1.3 分组交换

优点:

  • 无需建立连接
  • 存储转发,动态分配线路
  • 线路可靠性较高(中间有坏的,可以选择其他路)
  • 线路利用率高
  • 相对于报文交换,存储管理更加容易

缺点:

  • 有存储转发时延
  • 需要传输额外的信息量
  • 乱序到目的主机时,需对分组排序重置

报文交换VS分组交换

数据报方式为网络层提供无连接服务
虚电报方式为网络层提供连接服务

数据报方式:(因特网在用)

  • 无连接
  • 每个分组携带源和目的地址
  • 路由器根据分组的目的地址转发分组(基于路由协议/算法建立转发表,检索转发表,每个分组独立选路)

虚电报方式:(结合数据报方式和电路交换方式)

  • 每个分组携带虚电路号
  • 要事先建立连接(逻辑连接)

数据报方式VS虚电报方式

项目 数据报方式 虚电路方式
连接的建立 不要 必须要
目的地址 每个分组都有完整的目的地址 仅在建立连接时使用,之后每个分组使用长度较短的虚电路号
路由选择 每个分组独立进行路由选择,转发 属于同一条虚电路的分组按同一路由转发
分组顺序 不能保证有序 可保证有序
对网络故障的适应性 出故障的节点丢失分组,其他分组路由选择发生变化,可正常 均不可正常工作
差错处理和流量控制 由用户主机进行流量控制 可由分组交换网负责

4.2 路由算法

4.3 分层次的路由选择

  • 因特网的规模很大,转发表很大
  • 许多单位(自治系统AS)不想让外界知道自己的路由选择协议,但还想连接到因特网
  • 路由选择协议
    • 内部网关协议IGP:一个AS内使用:RIP、OSPF
    • 外部网关协议EGP:AS之间使用 BGP

4.4 IP数据报格式

IP数据报的首部格式

版本:IPV4/IPV6
首部长度:单位4B,最小为5
区分服务:指示希望获得哪种类型的服务
总长度:首部+数据,单位是1B
生存时间(TTL):IP分组的保质期,经过一个路由减1,变成0就丢弃
协议:数据部分的协议
首部检验和:只检验首部
源IP地址和目的IP地址:32位
可选字段:0~40B,用来支持排错,测量以及安全等措施
填充:全0,把首部补成4B的整数倍

IP数据报分片

标识(让分片知道自己是哪一家的):同一数据报的分片使用同一标识
标志:只有2位有意义:X_ _;中间位为DF(don’t fragment)=1,禁止分片,中间位DF(don’t fragment)=0,允许分片;最低位MF(more fragment)=1,后面还有分片,MF(more fragment)=0,代表最后一片/后面无分片
片偏移:指出较长的分组分片后,某片在原分组中的相对位置,以8B位单位(可以根据偏移重组)(除最后一个分片,每一个分片的长度一定是8B的整数倍)

例子:

数据报片 总长度 标识 MF DF 片偏移
原始数据报 3820 12345 0 0 0
数据报片1 1420 12345 1 0 0
数据报片2 1420 12345 1 0 175
数据报片3 1020 12345 0 0 350

总长度的单位是1B
片偏移的单位是8B
首部长度的单位是4B
记忆:一种8片的首饰

4.4 IPv4地址

IP地址:给网络中的每一台主机/每一个主机的接口/路由器的接口都赋予一个标识符,可以使我们在因特网中很方便寻址,方便数据通信和资源共享

IP地址:全世界唯一的32位/4字节标识符,标识路由器主机的接口。但一个主机可以有很多接口,无线上网-无线接口,有线上网-有线接口,但每个接口都只会分配一个IP地址,这样可以通过接口找到主机进行通信

分类的IP地址
IP地址::={<网络号><主机号>}

特殊的IP地址

网络号 主机号 作为IP分组源地址 作为IP分组目的地址 用途
全0 全0 可以 不可以 本网范围内表示主机,路由表中表现默认路由(表示整个internet网络)
全0 特定值 不可以 可以 表示本网某个特定主机
全1 全1 不可以 可以 本网的广播地址
特定值 全0 不可以 不可以 网络地址,表示一个网络
特定值 全1 不可以 可以 直接广播地址,对特定网络所有主机广播
127 任何数(非全0/1) 可以 可以 用于本地软件环回测试,称为环回地址
网络类型 最大可用网络数 第一个可用网络号 最后一个可用网络号 每个网络中最大主机数
A 27−22^7-227−2(0和127不可用) 1 126 224−22^{24}-2224−2
B 214−12^{14}-1214−1 128.1 191.255 216−22^{16}-2216−2
C 221−12^{21}-1221−1 192.0.1 223.255.255 28−22^{8}-228−2

路由器对目的地址是私有地址的数据报一律不进行转发

4.5 网络地址交换NAT

网络地址交换NAT:在专用网连接到因特网的路由器上安装NAT软件,安装了NAT软件的路由器叫NAT路由器,它至少有一个有效的外部全球IP地址

4.6 子网划分和子网掩码

分类的IP地址的弱点:

  • IP地址的空间利用率有时很低
  • 两级IP地址不够灵活

那么怎么知道要将信息传给哪个主机呢?(子网)-》子网掩码
子网掩码

例子:
某主机的IP地址为180.80.77.55,子网掩码为255.255.252.0,若该主机向其所在子网发送广播地址,则目的地址可以是()
A:180.80.76.0
B:180.80.76.255
C:180.80.77.255
D:180.80.79.255
分析:由于发送的是广播地址,则主机号应全1,即255,排除A
由于子网掩码是255.255.252.0,252=11111100
则前22位为网络号+子网号,后10位为主机号
因为IP地址为180.80.77.55,为B类地址,所以前2B为网络号,即,前16位为网络号,6位为子网号。
因此,网络号16位,子网号6位,主机号10位
77=01001100,取前6位,–》76,再把后面所有置1,-》79,因此,目的地址为180.80.79.255

例子:
已知IP地址为141.14.72.24,子网掩码是255.255.192.0,求网络地址

4.7 无分类编址CIDR

  1. 消除了传统的A类,B类和C类地址以及划分子网的概念
  2. 融合子网地址与子网掩码,方便子网划分
    CIDR 把网络前缀都相同的连续的IP地址组成一个CIDR地址块

构成超网
将多个子网聚合成一个较大的子网,叫做构成超网,或路由聚合
方法:将网络前缀缩短

最长前缀匹配
使用CIDR时,查找路由表可能得到几个匹配结果,应选择具有最长的网络前缀路由

例子:
路由器R0的路由表如下,若进入路由器R0的分组的目的地址为132.19.237.5,请问该分组应转发到以下哪个路由()

目的网络 下一跳
132.0.0.0/8 R1
132.0.0.0/11 R2
132.19.232.0/22 R3
0.0.0.0/0 R4

解答:132.19.237.5/8–》网络地址为:132.0.0.0 满足
132.19.237.5/11–》网络地址为:132.0.0.0 满足
132.19.237.5/22–》网络地址为:132.19.236.0 不满足
默认路由
因此最长为R2

例子:某网络的IP地址空间为192.168.5.0/24,采用定长子网划分,子网掩码为255.255.255.248,则该子网中最大的子网个数,每个子网内最大可分配的地址个数为()
因为该IP地址为C类地址,因此子网号+主机号所占位数为32-3*8=8位
由于248=11111000,因此,子网号占5位,主机号占3位
子网中最大的子网个数为252^525
每个子网内最大可分配的地址个数为23−22^3-223−2

4.8 ARP协议(IP地址与Mac地址的映射)

源主机和目的主机在一个网络内:

注意:ARP高速缓存中都是同网段的IP与MAC的映射

源主机和目的主机不在同一个网络中:
因为目的主机是5号,在1号主机的ARP表中找不到5号主机的IP地址与Mac地址的映射,并且,用1号主机的掩码与5号主机的IP相与发现不是在同一个局域网中,因此主机1就知道要找到默认网关的mac地址(默认网关是局域网与外部通信的一个关卡),从而才能找到主机5。图中1号主机所在局域网的默认网关为IP6,因此,下一跳mac地址应该填写mac6,但是怎么找到mac6呢?

ARP协议

  • 由于在实际网络的链路上传送数据帧时,最终必须使用mac地址
  • 完成主机/路由器IP地址到MAC地址的映射->解决下一跳的问题
  • 使用过程:检查ARP高速缓存,有相应表项则写入mac帧,没有则用目的mac地址FF-FF-FF-FF-FF-FF的帧封装,并广播ARP请求分组,同一局域网中的所有主机都可以收到该请求。目的主机收到请求后就会向源主机单播一个ARP响应分组,源主机收到此映射写入ARP缓存(10-20min更新一次)

ARP典型的四种情况

  • 主机A/路由器给本网络上的主机B,用ARP找到主机B的硬件地址
  • 主机A/路由器给另一网络上的主机B,用ARP找到本网络上的一个路由器的硬件地址

ARP协议是自动执行的
例子:主机A发送IP数据报给主机B,经过5个路由器,问总共使用多少次ARP协议?答:6次

4.9 DHCP协议(动态主机配置协议)

主机如何获得IP地址
静态配置:

  • IP地址
  • 子网掩码
  • 默认网关(同一网段中所有主机与外界网络通信所必须经过的关卡)

动态配置:

动态主机配置协议DHCP协议是应用层协议,使用客户/服务器方式,客户端和服务器端通过广播方式进行交互,基于UDP
DHCP提供即插即用的联网机制,主机可以从服务器动态获取IP地址,子网掩码和默认网关,DNS服务器名称与IP地址,允许地址重用,支持移动用户加入网络,支持用地址续租

工作流程

  • 主机广播DHCP发现报文(有没有DHCP服务器呀?)
  • DHCP服务器广播DHCP提供报文(有)
  • 主机广播DHCP请求报文(我要用你的IP地址)
  • DHCP服务器广播DHCP确认报文(用吧)

4.10 ICMP协议/网际控制报文协议(为了更有效转发IP数据报和提高交付成功的机会)

分为ICMP差错报告报文和ICMP询问报文

4.10.1 ICMP差错报告报文(5种)

  • 终点不可达(无法交付)
  • 源点抑制(拥塞而丢弃数据)
  • 时间超过(TTL=0)
  • 参数问题(首部字段有问题)
  • 改变路由(重定向)(值得更好的路由)

不发送ICMP差错报告报文的情况

  • ICMP差错报告报文不再发送ICMP差错报告报文
  • 对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文
  • 对具有组播地址的数据报都不发送ICMP差错报告报文
  • 对具有特殊地址(如127.0.0.0或0.0.0.0) 的数据报不发送ICMP差错报告报文

4.10.2 ICMP询问报文

  • 回送请求和回答报文(主要是测试目的站是否可达以及了解其相关状态)
  • 时间戳请求和回答报文(主要用来进行时钟同步和测量时间)
  • 掩码地址请求和回答报文
  • 路由器询问和通告报文

ICMP的应用
ping——测试两个主机之间的连通性,使用ICMP回送请求和回答报文
Traceroute——跟踪一个分组从源点到终点的路径,使用了ICMP时间超过差错报告报文

4.11 IPv6

从根本上解决地址耗尽问题。首部改进,加快分组的处理速度

IPv6数据报格式

扩展首部可有可无,看看数据报是否需要提供其他功能
支持即插即用,首部长度必须是8B的整数倍
IPv6只能在主机处分片

IPv6基本地址类型
单播:一对一通信,可做源地址,目的地址
多播:一对多通信,可做目的地址
任播:一对多中的一个通信,可做目的地址

IPv6向IPv4过渡策略
双栈协议:(同时启用IPv4协议栈和IPv6协议栈,可以是路由器,也可以是计算机)
隧道技术:将其他协议的数据帧或包重新封装,然后通过隧道发送

4.12 RIP协议及距离向量算法

RIP是一种分布式的基于距离向量的路由选择协议。是因特网的协议标准,最大优点是简单
RIP协议要求网络中每一个路由器都维护从它自己到其他每一个目的网络的唯一最佳路径(即一组距离)
RIP允许一条路由最多只能包含15个路由器,因此距离为16表示网络不可达-》RIP只使用与小互联网

RIP协议和谁交换?多久交换一次?交换什么?(路由表中信息如何来的-》交换)

  • 仅和相邻路由器交换信息
  • 路由器交换的信息是自己的路由表
  • 30s交换一次-》最终得到最短路径和下一跳路由地址-》“收敛”

路由器如何得到最短路径(如何更新)——距离向量算法

  • 修改相邻路由器发来的RIP报文的所有表项,改下一跳and距离加1
  • 对修改后的RIP报文中的每一个项目,执行
    • R1路由表中若无Net3,则直接写入R1路由表
    • 有Net3,查看下一跳地址:
      • 若是X,则更新
      • 若不是X,比较跳数,现在更少则更新
  • 若180s未收到相邻路由器X的更新路由表,则将X作为不可达路由器,把距离设为16
  • 返回

例子:下面向量刚刚到达路由器C,来自B的向量为(5,0,8,12,6,2),来自D的向量为(16,12,6,0,9,10),来自E的向量为(7,6,3,9,0,4),经测量,C到达B,D,E的延迟分别为6,3,5,那么C到所有节点最短路径为?

RIP是应用层协议,使用UDP传送数据
特点:好消息传播快,坏消息传播慢(慢收敛)

4.13 OSPF协议及链路状态算法

OSPF:开放最短路径优先协议
OSPF最主要的特征是使用分布式的链路状态协议
和谁交换——使用洪泛向自治系统内所有路由器发送信息(一个传一个,向相邻传,相邻又向相邻传),即路由器通过输出端口向所有相邻的路由器发送信息,而每一个相邻路由器又再次将此信息发往其所有的相邻路由器。最终整个区域内所有路由器都得到了这个信息的副本——广播
交换什么——发送与本路由器相邻的所有路由器的链路状态(本路由器和哪些路由器相邻,以及该链路的度量/代价–费用,距离,时延,带宽等)
多久交换——只有当链路状态发生变化时才洪泛发送此信息
最后,所有路由器都能建立一个链路状态数据库,即全网拓扑图

链路状态路由算法

  • 每个路由器发现它的邻居节点[HELLO问候分组],并了解邻居节点的网络地址
  • 设置到他的每个邻居的成本度量metric
  • 构造[DD数据库描述分组],向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息
  • 如果DD分组中的摘要信息自己都有,则邻站不做处理,如有有没有的或者是更新的,则发送[LSR链路状态请求分组],请求自己没有的和比自己更新的信息
  • 收到邻站的LSR分组后,发送[LSR链路状态更新分组]进行更新
  • 更新完后,邻站返回一个[LSAck链路状态确认分组]进行确认

只要一个路由器的链路状态发生变化:

  • 洪泛发送[LSU链路状态更新分组]进行更新
  • 更新完毕后,其他站返回一个[LSAck链路状态确认分组]进行确认。
  • 使用Dijkstra根据自己的链路状态数据库构造到其他节点间的最短路径

OSPF区域
OSPF将自治系统再进行划分成区域

OSPF分组

OSPF直接用IP数据报传送
OSPF的其他特点

  • 每隔30min,要刷新一次数据库中的链路状态
  • 由于一个路由器的链路状态只涉及到相邻路由器的连通状态,因而与整个互联网的规模并无直接关系,因此当互联网规模很大时,OSPF协议要比距离向量协议RIP好得多
  • OSPF不存在坏消息传的慢的问题,他的收敛速度很快。(RIP协议在更新路由表信息的时候,会参照邻站的表项进行更新,因此需要对照的这个过程,但是OSPF只需要将邻站的表项直接更新到自己的表项中,无需对照,然后使用链路状态算法来找到最短路径)

4.14 BGP(Border Gateway Protocol 边界网关协议)

和谁交换——与其他AS的邻站BGP发言人交换信息
交换什么——交换网络可达性信息,即要到达某个网络所要经过的一系列AS
多久交换——发生变化时交换

BGP是应用层协议,借助TCP传送
特点

  • 支持CIDR
  • 发生变化时更新有变化的部分

三种协议的比较

协议 RIP OSPF BGP
类型 内部 内部 外部
路由算法 距离向量 链路状态 距离向量
传送协议 UDP TCP TCP
路径选择 跳数最少 代价最低 较好,非最优
交换节点 和本节点相邻的路由器 网络中的所有路由器 和本节点相邻的邻站BGP发言人
交换内容 当前路由器知道的全部信息,即自己的路由表 与本节点相邻的所有链路状态 首次:整个路由表;非首次:有变化的部分

4.15 IP组播

单播:点对点
广播:点对多点(不考虑用户需求)(不考虑你有没有男朋友都告白)
组播(多播):点对多点(有相同需求)(只告白那些没有男朋友的女生)

IP组播地址:(如何确定该IP是属于该组播中从而将IP数据报发送给他)
IP组播地址让源设备能够将分组发送给一组设备,属于多播组的设备将分配一个组播IP地址(一群共同需求的主机的相同标识)
组播地址为224.0.0.0~239.255.255.255(D类地址),一个D类地址表示一个组播组,只能用作分组的目的地址,源地址总是单播地址

  • 组播数据报也是"尽最大努力交付",不提供可靠交付,应用于UDP(但是速度比较快)
  • 对组播数据不产生ICMP差错报文
  • 并非所有D类地址都可以作为组播地址

分类

硬件组播
同单播地址一样,组播IP地址也需要相应的组播MAC地址在本地网络实际传输帧。组播MAC地址以十六进制值01-00-5E打头,余下的6个十六进制位是根据IP组播地址的最后23位转换得到的。
收到多播数据报的主机,还要在IP层利用软件进行过滤,把不是本主机要接收的数据报丢弃

4.16 IGMP协议与组播路由选择协议

IGMP协议:可以使得路由器知道他所连接的局域网中是不是还有可以接收组播数据报的主机
组播路由选择协议:多个路由器,涉及到路径选择

4.16.1 网际组管理协议IGMP

可以用于判断,如果一个路由器收到一个组播的数据报,要不要发送给它所连接的局域网。就比如下面,如果R4收到组播数据报,通过IGMP协议,R4知道自己局域网中没有加入该组播组,因此不会发送。

IGMP工作的两个阶段

  • 某主机要加入组播组时,该主机向组播组的组播地址发送一个IGMP报文,声明自己要称为该组的成员。本地组播路由器收到IGMP报文后,要利用组播路由选择协议把这组成员关系发给因特网上的其他组播路由器
  • 本地组播路由器周期性的探寻本地局域网上的主机,以便知道这些主机是否还是组播组的成员。只要有一个主机对某个组响应,那么组播路由器就认为这个组是活跃的,如果经过几次探寻后没有一个主机响应,组播路由器就认为本网络上没有此组播组的主机,因此不再把这组的成员关系发给其他组播路由器

组播路由器知道的成员关系只是所连接的局域网中有无组播组的成员

4.16.2 组播路由选择协议

组播路由选择协议目的是找出以源主机为根节点的组播转发树

组播路由选择协议常常使用的三种算法

  • 基于链路状态的路由选择
  • 基于距离-向量的路由选择
  • 协议无关的组播(稀疏/密集)

4.17 移动IP

相关术语:
移动IP技术是移动节点(计算机/服务器等)以固定的网络IP地址,实现跨越不同网段的漫游技术,并保证了基于网络IP的网络权限再漫游中不发生变化
移动节点:具有永久IP地址的移动设备
归属代理(本地代理):一个移动节点拥有的就"居所"称为归属网络,在归属网络中代表移动节点执行移动管理功能的实体就叫归属代理
外部代理(外地代理):在外部网络中帮助移动节点完成移动管理功能的实体称为外部代理
永久地址(归属地址/主地址):移动站点在归属网络中的原始地址
转交地址(辅地址):移动网络在外部网络中使用的临时地址

通信过程

4.18 网络层设备

路由器:是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组,根据说选定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断的更新和维护路由表

交换结构:根据转发表(路由表得到)对分组进行转发

路由器中输入输出队列溢出是造成分组丢失的重要原因。队列存储空间减少不得不丢弃后面进入的分组

第五章 传输层

传输层的功能:

  • 实现进程与进程的逻辑通信(网络层是实现主机与主机间的逻辑通信)
  • 复用与分用(寄信与收信:用的是同一个邮箱,但最终可以送到不同人手上)
  • 对收到的报文进行差错控制
  • 传输层的两种协议(TCP/UDP:大哥TCP,二弟UDP,大哥靠谱,二弟不靠谱)

5.1 传输层的寻址与端口

复用:应用层所有的应用程序都可以通过传输层传输到网络
分用:传输层从网络层收到数据后,交付给指明的应用进程

逻辑端口/软件端口:端口是传输层的SAP,标识主机中的应用进程
端口号只有本地意义,在因特网中不同计算机端口号是没有联系的
端口号长度是16bit,能表示65535不同端口号

应用程序 FTP TELNET SMTP DNS TFTP HTTP SNMP
端口号 21 23 25 53 69 80 161
发现 谈恋爱 删好友 打电话 还要见面

套接字Socket=(主机IP地址,端口号)
唯一标识了网络中的一个主机和它上面的一个进程

5.2 UDP协议:用户数据报协议

特点:

  • 无连接的
  • 尽最大努力交付,不保证可靠交付
  • 面向报文的,适合一次性传输少量数据的网络应用(应用层给UDP多长的报文,UDP就照样发送,即一次发送一个完整的报文)
  • UDP无拥塞控制,适合很多实时应用
  • UDP首部开销小,8B,TCP是20B

UDP首部格式

5.3 TCP协议

TCP协议的特点:

  • 面向连接(虚连接)的传输层协议
  • 每一条TCP连接是点对点的
  • 可靠,有序,不丢不重
  • 可提供全双工通信——发送缓存(准备发送的数据&已发送但未收到确认的数据),接收缓存(按序到达但未被接收应用程序取得&不按序到达)
  • 面向字节流

TCP报文段首部格式

序号:发送的第一个字节的序号
确认号:期望收到对方下一个报文段的第一个数据字节的序号。若为n,则表示前N-1为止的所有数据已确认收到
数据偏移(首部长度):以4B为单位,即一个数值是4B
紧急位URG:URG=1时,表明该段中有紧急数据,是高优先级的数据,应尽快传送
确认位ACK:Ack=1时确认有效,在连接建立后所有传送的报文段都必须把Ack置为1
推送位PSH:PSH=1时,接收方尽快交付接收应用程序,不再等到缓存填满再向上交付
复位RST:RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立连接
同步位SYN:SYN=1时,表明是一个连接请求/连接接受请求
终止位FIN:FIN=1时,表明此报文段发送方数据已发完,要求释放连接
窗口:指的是发送本报文段的一方接收窗口,即现在允许对方发送的数据量
检验和:检验首部+数据,检验时要加上12B伪首部,第四个字段为6
紧急指针:URG=1时才有意义,指出本报文段中紧急数据的字节数
选项:最大报文段长度MSS,窗口扩大,时间戳,选择确认等

5.3.1 TCP连接管理

传输的三个阶段(三次握手)
连接建立-》数据传送-》连接释放
采用客户/服务器方式

TCP连接建立:三次握手

  • 客户端发送连接请求报文段,无应用层数据 SYN=1,seq=x(随机)
  • 服务器端为该TCP连接分配缓存和变量,并向客户端返回确认报文段,允许连接,无应用层数据。 SYN=1,Ack=1,seq=y(随机),ack=x+1
  • 客户端为该TCP连接分配缓存和变量,并向服务器端返回确认的确认,可以携带数据 SYN=0,Ack=1,seq=x+1,ack=y+1

SYN洪泛攻击:不停发送某一种请求报文段,而不作任何其他处理,导致服务器消耗cpu内存而死机
解决:SYN Cookie

TCP连接释放:四次握手

  • 客户端发送连接释放报文段,停止发送数据主动关闭TCP连接 FIN=1,seq=u
  • 服务器端回送一个确认报文段,客户服务器这个方向的连接就释放了——半关闭状态 Ack=1,seq=v,ack=u+1
  • 服务器端发完数据,就发出连接释放报文段,主动关闭TCP连接 FIN=1,Ack=1,seq=w,ack=u+1
  • 客户端回送一个确认报文段,再等待计时器设置的2MSL(最长报文段寿命)后,连接彻底关闭 Ack=1,seq=u+1,ack=w+1

5.3.2 TCP可靠传输

实现可靠传输的机制:
1.校验(与UDP校验一样,增加伪首部)
2.序号(一字节占用一个序号,序号字段指的是一个报文段第一个字节的序号)
3.确认(返回确认报文,采用累积确认的方式)
4.重传(超时重传)(TCP发送方在规定时间(重传时间)内没有收到确认就要重传已发送的报文段(重传时间)) TCP采用自适应算法,动态改变重传时间RTTs
(加权平均往返时间)

5.3.2 TCP流量控制

流量控制:让发送方慢点,要让接收方来得及接收
使用滑动窗口机制实现流量控制
在通信过程中,接收方根据自己接收缓存的大小,动态的调整发送发的发送窗口大小,即接收窗口rwnd(接收方设置确认报文段的窗口字段来将rwnd通知给发送方),发送方的发送窗口取决接收窗口rwnd和拥塞窗口cwnd的最小值

TCP的流量控制过程
A向B发送数据,连接建立时,B告诉A:“我的rwnd=400(字节)”,设每一个报文段100B,报文段序号初始值为1

rwnd=0的一段时间后,接收方的将缓存中的数据交给了上层,允许发送方继序发送数据,于是告诉发送发可以继续发送了,我的rwnd=400,若其中发生了错误,没法告诉给A,那么发送方和接收方就会处于彼此等待的情况(类似于死锁)
解决:TCP为每一个连接设有一个持续的计时器,只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器。若持续计时器设置的时间到期,就发送一个零窗口探测报文段,接收方收到探测报文段时给出现在的窗口值。若窗口仍然是0,那么发送发就会重新设置持续计时器。

5.3.3 TCP拥塞控制

拥塞控制:防止过多的数据注入到网络中(全局性)

拥塞控制的四种算法
慢开始、拥塞避免、快重传、快恢复

假定:

  • 数据单方向传送,而另一个方向只传送确认
  • 接收方总是有足够大的缓存空间,因而发送窗口大小取决于拥塞程度
    • 实际上发送窗口=min{接收窗口rwnd,拥塞窗口cwnd}
    • 接收窗口:接收方根据接收缓存设置的值,并告知给发送方,反映接收方的容量
    • 拥塞窗口:发送方根据自己估算的网络拥塞程度而设置的窗口值,放映网络当前容量

慢开始和拥塞避免

快重传和快恢复

6、应用层

应用层对应用程序的通信提供服务。

应用层功能

  • 文件传输,访问和管理(FTP)
  • 电子邮件(SMTP,POP3)
  • 虚拟终端
  • 查询服务和远程作业登录

应用层的重要协议:FTP、SMTP,POP3、HTTP、DNS

6.1 域名解析系统:DNS系统

域名


域名服务器:

域名解析过程

  • 递归查询(靠别人)
  • 迭代查询(靠自己)

6.2 文件传输协议FTP

文件传送协议FTP(File Transfer Protocol):提供不同种类主机系统(硬、软件体系都可以不同)之间的文件传输能力
简单文件传送协议TFTP(Trivial File Transfer Protocol)

FTP使用TCP实现可靠传输

6.3 电子邮件

电子邮件的信息格式

电子邮件的组成结构

6.3.1 简单邮件传送协议 SMTP

SMTP的缺点

  • 不能传送可执行文件或其他二进制对象
  • 仅限传送7位ASCII码,不能传送其他非英语国家的文字
  • 会拒绝超过一定长度的邮件

6.3.2 通用因特网邮件扩充MIME

在SMTP协议上进行扩充。

6.3.3 邮局协议POP3&网际报文存取协议 IMAP

POP3是在读取邮件中使用。
IMAP协议比POP3协议复杂。当用户pc上的IMAP客户程序打开IMAP服务器的邮箱时,用户可以看到邮箱的首部,若用户需要打开某个邮件,该邮件才上传到用户的计算机上
IMAP可以让用户在不同的地方使用不同的计算机随时上网阅读处理邮件,还允许只读取邮件中的某一部分(先看正文,有WIFI的时候再下载附件)

6.3.4 基于万维网的电子邮件

6.4 万维网和HTTP协议

万维网WWW是一个大规模的、联机式的信息储藏所/资料空间,是无数个网络站点和网页的集合。
统一资源定位符URL—唯一标识—资源(文字、视频、音频…)
用户通过点击超链接获取资源,这些资源通过超文本传输协议HTTP传送给使用者。
万维网以客户/服务器方式工作,用户使用的浏览器就是万维网客户程序,万维网文档所驻留的主机运行服务器程序。
万维网使用超文本标记语言HTML使得万维网页面设计者可以很方便的从一个网络的链接转到另一个网络,并能在自己的屏幕上显示出来。

6.4.1 超文本传输协议 HTTP

HTTP协议定义了浏览器(万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。

HTTP的连接方式

  • 非持久连接
  • 持久连接(非流水线、流水线)

计算机网络基础知识总结二(详细)相关推荐

  1. 计算机网络基础知识总结一(详细)

    计算机网络是考研的重点,也是日后工作最基本的知识点之一.本博文详细的总结了计算机网络的基础知识,方便日常查看和复习,希望有所帮助. 视频学习链接:https://www.bilibili.com/vi ...

  2. 超详细的计算机网络基础知识总结 第三章:数据链路层

    本文基于:王道计算机考研-计算机网络 其他文章: 超详细的计算机网络基础知识 第一章:概述 超详细的计算机网络基础知识 第二章:物理层 超详细的计算机网络基础知识 第四章:数据链路层 超详细的计算机网 ...

  3. 超详细的计算机网络基础知识总结 第一章:概述

    本文基于:王道计算机考研-计算机网络 顺便提一嘴,王道计算机网络的小姐姐声音真滴好听 相关文章 超详细的计算机网络基础知识 第二章-物理层 超详细的计算机网络基础知识 第三章:数据链路层 超详细的计算 ...

  4. 超详细的计算机网络基础知识总结 第四章:网络层

    本文基于:王道计算机考研-计算机网络 ☺其他文章: 超详细的计算机网络基础知识 第一章:概述 超详细的计算机网络基础知识 第二章:物理层 超详细的计算机网络基础知识 第三章:数据链路层 超详细的计算机 ...

  5. 网络通信学习笔记之——计算机网络基础知识

    一.计算机网络基础知识 1.什么是计算机网络 ​ 把分布在不同地理位置的计算机与专门的网络设备用通信线路互相连成一个规模大.功能强的系统, 从而使众多计算机可以方便地互相传递信息.共享软件.硬件.数据 ...

  6. 计算机网络基础知识及面试总结-这应该是最全的了

    文章目录 计算机网络基础知识及面试总结 1 基本概念 1.1 TCP/IP协议栈,OSI参考模型 1.2 简要的介绍各层的作用 1.3 常见的协议 2 应用层 2.1 HTTP请求有哪些常见状态码? ...

  7. 计算机网络基本知识教学设计,计算机网络基础知识教学设计.doc

    计算机网络基础知识教学设计 教学设计: 课 程 名 称: 计算机网络 教学设计题目: 计算机网络基础知识 学 校 名 称:灵石县第一职业高级中学 专 业 名 称: 计算机应用 参赛人员姓名: 于海峰 ...

  8. 最容易理解的计算机网络 基础知识概论(下)

    文章目录 1.计算机网络的分类 1.1按照传输介质分类 1.2按照网络的使用者进行分类 1.3按照网络的规模和作用范围进行分类. 2.计算机网络的性能指标 2.1 带宽 2.2 时延 2.2.1网络时 ...

  9. 办公自动化基础知识题二

    办公自动化基础知识题二 一.选择题 1.软盘不能写入只能读出的原因是___. (A) A)写保护 B)新盘未格式化 C)已使用过的软盘 D)软驱有问题  2.下列设备中属于计算机输入设备的是___.  ...

最新文章

  1. java中读取properties文件内容五种方式
  2. 公司网络推广浅析网站想要“久居”首页的方法有哪些?
  3. 你自己永远是个非常非常弱小的一个东西
  4. 基于注解进行bean的装配
  5. shell脚本_Shell脚本
  6. MMORPG的一份Unity手游性能蓝皮书
  7. 微信深色模式最大的槽点终于被干掉了,这一次安卓用户先享受!
  8. 安装win10和ubuntu双系统启动不了解决
  9. (六)数据处理——录入、清洗、加工、描述
  10. 浅谈木材加工企业的电气火灾隐患及电气火灾监控系统的应用
  11. Nordic nRF52840实战学习--ble_app_blinky例程
  12. 这可能是史上最全的常用学术网站
  13. 服务器端获取签名直传OOS
  14. ERP系统的备份考虑
  15. win11如何开启电脑高性能模式?
  16. 微信小程序canva生成图片,长按图片识别小程序二维码详解
  17. 2020-03-18HTML
  18. HCIA第十天【寒假集训第七天】(OSPF)
  19. win10下安装并启动zookeeper
  20. Macbook IDEA快捷键及相应的修改

热门文章

  1. 带你了解鲜为人知的“神秘”位段~
  2. 解决vue路由hash模式下,微信网页授权问题
  3. 微信聊天记录导出工具WeChatExporter开源啦!
  4. NetNewsWire 6.0b3 (最好用的RSS新闻订阅客户端)
  5. Matlab:matlab 画图总结(二维图、饼图、直方图,坐标轴设置)及输出高清晰度图
  6. Li‘s 核磁共振影像数据处理-1(下)-DWI基础
  7. Nginx 使用之一(server参数配置)
  8. tf.function
  9. 从数理角度理解生活中的“二八定律”
  10. 楼板计算塑形弹性_如何正确进行楼板的塑性计算及其经济性分析