IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 计算机网络 -> 正文阅读

[网络协议]计算机网络

计算机网络

计算机网络笔记

TCP/IP五层模型


在这里插入图片描述
img

OSI七层模型

OSI(Open System Interconnect),开放式系统互联。

名称任务数据单元
应用层通过应用进程间的交互来完成特定网络应用,进程指主机中正在运行的程序 ;应用层交互的数据单元称为报文message(消息)
传输层向两台主机中进程之间的通信提供通用的数据传输服务,运输层有着复用和分用的功能 ;传输层主要协议:传输控制协议TCP、用户数据报协议UDPsegment(TCP报文段)、datagram(UDP用户数据报)
网络层为分组交换网上的不同主机提供通信服务、选择合适的路由,使源主机传输层传下来的分组,能通过路由器找到目的主机。最重要的协议是: IP协议packet(IP数据报)
数据链路层相邻结点之间传送数据时,链路层将网络层交下来的IP数据包组装成帧,在相邻结点间的链路上传送frame(帧)
物理层确定与传输媒体的接口有关的一些特性,数据单位是比特bit(比特流)


通信演示动图:在这里插入图片描述

  • 1、物理层

    ? 为上层协议提供了一个传输数据的可靠的物理媒介。简单的说,物理层确保原始的数据可在各种物理媒介上传输。

    ? 两个重要的设备名称:中继器集线器

  • 2、数据链路层

    ? 数据链路层为网络层提供可靠的数据传输;

    ? 基本数据单位为:

    ? 主要的协议:以太网协议

    ? 两个重要的设备名称:网桥交换机

    ? MAC帧格式:帧头(目的 MAC 地址 + 源 MAC 地址 + 类型 )+数据字段+帧尾(帧检验序列)

  • 3、网络层

    ? 实现两个端系统之间的数据透明传送,具体功能包括寻址和路由选择连接的建立保持和终止等。它提供的服务使传输层不需要了解网络中的数据传输和交换技术。

    ? 基本数据单位:IP数据报(数据报、分组、包)

    ? IP协议的主要功能有:无连接数据报传输数据报路由选择差错控制

    ? 包含的主要协议:

    ? IP协议(Internet Protocol,因特网互联协议);

    ? ICMP协议(Internet Control Message Protocol,因特网控制报文协议);

    ? ARP协议(Address Resolution Protocol,地址解析协议);

    ? RARP协议(Reverse Address Resolution Protocol,逆地址解析协议);

    ? 重要的设备名称:路由器

    ? ICMP报文包含在IP数据报中,属于IP的一个用户,IP头部就在ICMP报文的前面,所以一个ICMP报文包括IP头部ICMP头部ICMP报文IP头部的Protocol值为1就说明这是一个ICMP报文;ICMP头部中的类型(Type)域用于说明ICMP报文的作用及格式,此外还有一个代码(Code)域用于详细说明某种ICMP报文的类型,所有数据都在ICMP头部后面。

  • 4、传输层

    ? 将上层数据分段并提供端到端的、可靠的或不可靠的传输。此外,传输层还要处理端到端的差错控制流量控制问题。网络层只是根据网络地址将源结点发出的数据包传送到目的结点,而传输层则负责将数据可靠地传送到相应的端口

    ? 一个很重要的功能:复用和分用

    ? 信息传送的协议数据单元称为报文

    ? 包含的主要协议:

    ? TCP协议(Transmission Control Protocol,面向连接的传输控制协议);

    ? UDP协议(User Datagram Protocol,无连接的用户数据报协议);

    ? 重要的设备名称:网关

  • 5、会话层

    ? 管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。会话层还利用在数据中插入校验点来实现数据的同步

    ? 数据传输基本单位为:报文

  • 6、表示层

    ? 对上层数据或信息进行变换以保证一个主机应用层信息可以被另一个主机的应用程序理解。表示层的数据转换包括数据的加密、压缩、格式转换等。

    ? 数据传输基本单位为:报文

  • 7、应用层

    ? 为操作系统或网络应用程序提供访问网络服务的接口。直接为用户的应用进程提供服务(HTTP、FTP等)。

    ? 数据传输基本单位为:报文

  • 网络互连的中间设备

    • 物理层使用的中间设备称为 转发器中继器集线器
    • 数据链路层使用的中间设备称为 网桥/桥接器交换机
    • 网络层使用的中间设备称为 路由器
    • 网络层以上使用的中间设备称为 网关
  • IP地址及分类

    {<网络号>,<主机号>}

第一个字段第二个字段
网络号,标志主机或路由器所连接到的网络。主机号,标志该主机或路由器
类别网络号主机号可用范围说明
A类(0)8位24位1.0.0.1~126.255.255.254剩余网络号全0全1保留
B类(10)16位16位128.1.0.1~191.254.255.254剩余网络号全0全1保留
C类(110)24位8位192.0.1.1~223.255.254.254剩余网络号全0全1保留
类别最大网络数(可用, 后同)第一个网络号最后一个网络号最大主机数
A类126(2^7 - 2)1.0.0.0126.0.0.02^24 - 2
B类16383(2^14 - 1)128.1.0.0191.255.0.02^16 - 2
C类2097151(2^21 - 1)192.0.1.0223.255.255.02^8 - 2

注:

  • A类网络号减2:1、IP全0表示 本网络; 2、IP 127(01111111)表示环回测试地址

  • A类主机号减2:1、全0表示所连接到的单个网络地址; 2、全1表示所有主机

  • B类网络号减1:1、前面两位(1 0)已经固定,不会出现全0或全1; 2、128.0.0.0不指派

  • B类主机号减2:扣除全0和全1的情况

  • C类网络号减1:1、前面两位(1 1 0)已经固定,不会出现全0或全1; 2、192.0.0.0不指派

  • C类主机号减2:扣除全0和全1的情况

    在这里插入图片描述

  • 其他

    • 控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

    • IP地址放在IP数据报首部,而硬件地址放在MAC帧首部。在网络层及以上使用的是IP地址,而数据链路层及以下使用的是硬件地址

    • 使用抽象的IP地址,而不直接使用硬件地址通信的原因:全世界存在不同的网络使用不同的硬件地址,要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,但IP编址把这个复杂问题解决了

    • IP首部的固定长度是 20字节

    • IP数据报的数据部分4字节的整数倍 时开始。

    • 数据报能在互联网中经过的路由器的最大数值是 255, 若把TTL初始值设置为“1”,表示 这个数据报只在本局域网中传送

    • 划分子网的方法:从网络的主机号借用若干位作为子网号

      IP地址 = {<网络号>,<子网号>,<主机号>}

    • 子网掩码:将三级IP地址的子网掩码与收到的数据报的目的IP地址逐位相与,得出所要找的子网的网络地址

    • 无分类编制CIDR的特点:1、消除了传统的A、B、C类地址以及划分子网的概念;2、把网络前缀相同的连续的IP地址组成一个“CIDR地址块”

      IP = {<网络前缀>,<主机号>}

    • CIDR斜线记法:IP地址后面加上斜线“/”,然后写上网络前缀所占的位数

    • 网络号的位数直接决定了可以分配的网络数主机号的位数则决定了网络中最大的主机数

  • IP划分例题

    • 61.179.150.39/28 子网号为多少,广播号为多少,可用IP地址范围是多少

      子网号为:61.179.150.32, 广播号为:61.179.150.47,可用IP地址范围为:61.179.150.33–61.179.150.46

    • 19.224.17.0/17 可不可以配置在路由器的接口上?如果可以,是为什么,不可以又是为什么?

      可以。确定一个IP地址是否可用,应该先确定这个地址段的子网号和广播号,在这一个段中,除这两个特殊的地址不能使用外,其它全部可以使用。19.224.17.0/17 这个地址的子网号和广播号分别为:19.224.0.0-- 19.224.127.255。

    • 37.95.221.16/5 和 41.222.221.16/5 两个地址在不在同一个网段,能不能ping通?为什么?

      确定两个地址在不在同一个网段,就得看这两个地址的子网号广播号是否一致。如果一致,则属同网段,如果不一致,则不属同网段。根据题意可得:37.95.221.16/5的子网号和广播号分别为:32.0.0.0–39.255.255.255;41.222.221.16/5的子网号和广播号分别为:40.0.0.0–47.255.255.255。根据计算所得,我们可以得出这两个地址不在同一个网段,当然是不能互相直接ping通的。

TCP

面向连接的传输控制协议。

? TCP的特点:

? 1、面向连接的运输层协议;

? 2、每一条TCP连接只能有两个端点;

? 3、提供可靠交付的服务;

? 4、全双工通信;

? 5、面向字节流

? TCP进行拥塞控制的算法有四种:慢开始、拥塞避免、快重传、快恢复

? TCP握手中:SYN - 请求同步标志 ;ack - 确认号 ;ACK - 确认标志;seq - 序号;FIN - 结束标志

  • TCP的连接建立采用 三报文握手机制 , TCP的连接释放采用 四报文握手机制
  • TCP三次握手(仅客户端可发起连接请求):防止已失效的连接请求报文段突然又传送到了服务端,导致服务端一直处于等待状态(C->S的第一次SYN丢失,C重传SYN,第二次成功被S接受。但此时第一次的SYN又出现,且被S接受,导致S处于等待状态,而C会抛弃这个无效的ACK)。
    • 客户端C发送SYN(seq=j)连接请求,等待服务端S确认;如果C->SSYN中途丢失,则客户端C会重传syn,直到收到服务端SACK
    • 服务端S收到SYN请求,向客户端C发送SYN(seq=k)+ACK(ack=j+1)同步应答响应;如果S->C的SYN+ACK中途丢失,则服务端S会重传syn+ack,直到收到客户端CACK
    • 客户端C收到SYN+ACK响应,向服务端S发送ACK(ack=k+1)确认响应(注意不携带数据的ACK报文是不占据序列号)。如果C->S的ACK中途丢失,则客户端C发完ACK后会认为处于established状态,而服务端S则认为处于active状态,此时:
      • 如果双方没有发送数据,则服务端S会重传SYN+ACK,直到收到客户端CACK,收到后服务端S处于established状态;
      • 如果此时客户端C有数据发送,服务端S收到客户端CData+ACK,自然切换到established状态,并接受客户端CData
      • 如果此时服务端S有数据发送,数据发送不了,会重传SYN+ACK,直到收到客户端CACK才可以发送数据;
  • TCP四次握手(双方都可发起释放请求)服务端S在接收到客户端CFIN释放请求后,可能还有数据要发送,因此此时只返回一个ACK确认响应。当服务端S数据也发完后,再向客户端C发送FIN释放请求,客户端C再回应ACK确认响应(只有在客户端和服务端都没有数据要发送的时候才能断开TCP,而客户端发出FIN报文时只能保证客户端没有数据发了,服务端还有没有数据发客户端是不知道的)。
    • 客户端C发出FIN(seq=u)释放连接请求,并停止发送数据。客户端C进入FIN-WAIT-1状态(注意FIN报文段即使不携带数据也要占据一个序列号);
    • 服务端S收到FIN请求后,向客户端C发送ACK(ack=u+1,seq=v)确认响应。服务端S进入CLOSE-WAIT状态;
    • 此时处于半关闭状态,客户端C已经没有数据发送,若服务端S需要继续发送数据,则客户端C仍可接受;
    • 客户端C收到ACK响应后,进入FIN-WAIT-2状态,等待服务端S发送FIN释放请求;
    • 服务端S发送w个数据完成后,向客户端发CFIN(ack=w+1)释放连接请求,服务端S处于LAST-ACK状态;
    • 客户端C收到FIN请求后,必须向服务端S发出ACK(ack=w+1)响应,而自己的序列号是seq=u+1,此时客户端C处于TIME-WAIT状态,经过2MSL时间后才进入CLOSED状态。
    • 服务端S接收到ACK响应后,立即进入CLOSED状态。

img

  • TIME-WAIT处等待2MSL(Maximum Segment Lifetime)后才进入CLOSED

    • 为了保证A发送的最后一个ACK报文能够到达B。由于这个ACK报文段有可能丢失,B会超时重传这个FIN+ACK报文段,而A就能在2MSL时间内收到这个重传的FIN+ACK报文段。
    • 2MSL就是一个发送和一个回复所需的最大时间。
    • 在发送完ACK报文段后,再经过2MSL时间,就可以使本连接持续的时间所产生的所有报文段都从网络中消失。这样就可以使下一个新的连接中不会出现旧的连接请求的报文段
    • RFC 793中规定MSL为2分钟,实际应用中常用的是30秒、1分钟和2分钟等。
    • MSL(Maximum Segment Lifetime,报文最大生存时间),是任何报文在网络上存在的最长时间,超过这个时间的报文将被丢弃。
  • TCP保活计时器:服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常是设置为2小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75秒钟发送一次。若一连发送10个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接。

TCP保证可靠传输

  • 校验和:发送的数据包的二进制相加然后取反。检测数据在传输过程中的任何变化。如果收发方的校验和不相同,则丢弃不确认收到此报文段。

    img
  • 确认应答+序列号:发送方给发送的每一个包进行编号。接收方收到数据后,对发送方发送ACK报文进行确认应答序列号可以用来排序去重

    img
  • 超时重传:发送方很久没有收到接收方的ACK报文,就对刚才发送的数据进行重新发送。(超时时间可以设置)

  • 连接管理:三次握手和四次握手

  • 流量控制:根据接收方对数据的处理能力,控制发送方的发送速度,防止发送方发的太快,耗尽接收方的资源,从而使接收方来不及处理。如果接受到的窗口大小为0,则发送方停止发送数据,并定期向接收方发送窗口探测数据报段,获取接收方的窗口大小窗口大小=16位窗口字段的值左移M位,M是窗口扩大因子。

  • 拥塞控制:防止发送方发的太快,使得网络来不及处理,从而导致网络拥塞。慢开始、拥塞避免、快重传、快恢复。

    1、当cwnd<ssthresh时,使用慢开始算法(每经过一个传输轮次,窗口就指数增加)。

    2、当cwnd=ssthresh时,慢开始拥塞避免算法任意。

    3、当cwnd>ssthresh时,改用拥塞避免算法(线性增加)。

    4、当出现超时,调整门限ssthresh=cwnd/2,同时设置拥塞窗口为1,重新进入步骤1

    5、发送方连续收到3个对同一报文段的重复确认ACK,发送方执行**快重传(立即重传,不等到超时)快恢复(调整门限值ssthresh=cwnd/2=8,设置拥塞窗口cwnd=ssthresh=8)**算法。



    在这里插入图片描述

TCP滑动窗口

发送方的滑动窗口:

img

  1. 黑框就是滑动窗口。滑动窗口里是 已发出但未收到ACk、还未发出的 数据。
  2. #1已收到ack确认的数据。
  3. #2 已发出但还没收到ack的数据。
  4. #3 在窗口中还没有发出的数据(接收方还有空间)。
  5. #4 窗口以外的数据(接收方没空间)

滑动后的滑动窗口(收到36的ack,并发出了46-51的字节):

img

UDP

? UDP的特点:

? 1、无连接的;

? 2、尽最大努力交付;

? 3、面向报文

? 4、没有拥塞控制;

? 5、支持N对N信道;

? 6、首部开销小。

UDP可靠传输

传输层无法保证数据的可靠传输,只能通过应用层来实现。

  • 添加确认应答机制
  • 添加包序号
  • 添加超时重传机制

TCP与UDP区别

  • 可能面临的攻击

    • TCPSYN Flood攻击,根据三次握手协议,不断发送SYN请求,使服务端处于等待状态,资源耗尽。可增加连接数减小超时时间。通过netstat查看服务器网络连接情况
    • UDPUDP Flood攻击,向服务端发送大量UDP报文,消耗网络带宽资源,导致网络瘫痪。可限流
  • 运行在TCP协议上的协议:

    • HTTP(Hypertext Transfer Protocol,超文本传输协议),主要用于普通浏览。
    • HTTPS(HTTP over SSL,安全超文本传输协议),HTTP协议的安全版本。
    • FTP(File Transfer Protocol,文件传输协议),用于文件传输。
    • POP3(Post Office Protocol, version 3,邮局协议),收邮件用。
    • SMTP(Simple Mail Transfer Protocol,简单邮件传输协议),用来发送电子邮件。
    • TELNET(Teletype over the Network,网络电传),通过一个终端(terminal)登陆到网络。
    • SSH(Secure Shell,用于替代安全性差的TELNET),用于加密安全登陆用。
  • 运行在UDP协议上的协议:

    • BOOTP(Boot Protocol,启动协议),应用于无盘设备。
    • NTP(Network Time Protocol,网络时间协议),用于网络同步。
    • DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),动态配置IP地址。
  • 运行在TCP和UDP协议上:

    • DNS(Domain Name Service,域名服务),用于完成地址查找,邮件转发等工作。

HTTP 和 HTTPS

HTTP和HTTPS协议底层都是基于TCP的协议,只是HTTPS协议中间多了一层SSL或者TLS,因此HTTPS是在HTTP的基础上增加了一层SSL的加密协议。TLS是SSL的升级版,它们的作用都是进行加密的连接。

preview

HTTP

  • 特点

    • 无状态:协议对客户端没有状态存储,对事物处理没有“记忆”能力,比如访问一个网站需要反复进行登录操作
    • 无连接:HTTP/1.1之前,由于无状态特点,每次请求需要通过TCP三次握手四次挥手,和服务器重新建立连接。比如某个客户机在短时间多次请求同一个资源,服务器并不能区别是否已经响应过用户的请求,所以每次需要重新响应请求,需要耗费不必要的时间和流量。
    • 基于请求和响应:基本的特性,由客户端发起请求,服务端响应
      简单快速、灵活
    • 通信使用明文、请求和响应不会对通信方进行确认、无法保护数据的完整性
  • HTTP流程

  • HTTP报文格式

在这里插入图片描述

  • HTTP状态码
    img
    img
    v2-5457e8f8ec08bda0f0b1092bf4e23fa8_720w

HTTPS

  • HTTPS优点

    • 内容加密:采用混合加密技术,中间者无法直接查看明文内容
    • 验证身份:通过证书认证客户端访问的是自己的服务器
    • 保护数据完整性:防止传输的内容被中间人冒充或者篡改
  • HTTPS缺点

    • 相同网络环境下,HTTPS协议会使页面的加载时间延长近50%(打开速度问题可以通过CDN加速解决),增加10%到20%的耗电。此外,HTTPS协议还会影响缓存,增加数据开销和功耗。
    • HTTPS协议的安全是有范围的,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。
    • SSL 证书的信用链体系并不安全。特别是在某些国家可以控制 CA 根证书的情况下,中间人攻击一样可行。
    • SSL的专业证书需要购买,功能越强大的证书费用越高。
    • SSL 证书通常需要绑定 固定IP,为服务器增加固定IP会增加一定费用;
    • HTTPS 连接服务器端资源占用较高,相同负载下会增加带宽和服务器投入成本
  • 对称加密:靠一个密钥来加密数据,使用相同的一个密钥来解密数据。首先用户需要把自己的一把钥匙给送给服务器,用户用这把钥匙加密数据,然后服务器待会拿这把相同的钥匙去解密用户接下来发送的数据。每个用户都必须拥有一把只属于自己的密钥,因此会给服务器增加了太多的负荷;且由于是明文发送,因此容易被截获。但是,该加密方式计算量小,加密和解密的速度比较快,适合加密比较大的数据

img

  • 非对称加密:有一个公钥和一个私钥公钥加密只能私钥解密,私钥加密只能公钥解密。因为解密和加密使用不同的钥匙,所以称为非对称加密。公钥和私钥都放在服务器上,公钥是可以随便传输的,私钥是绝对不会暴露的,数据传输是安全的。该加密方式数据传输虽然安全,但是计算量大,加密和解密的速度比较慢

img

  • 混合加密:结合非对称加密对称加密技术。客户端使用对称加密生成密钥对传输数据进行加密,然后使用非对称加密的公钥再对秘钥进行加密,所以网络上传输的数据是被秘钥加密的密文和用公钥加密后的秘密秘钥,因此即使被黑客截取,由于没有私钥,无法获取到加密明文的秘钥,便无法获取到明文数据。

  • HTTPS加密、解密及验证过程

img

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-04-09 18:53:50  更:2022-04-09 18:56:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/31 4:37:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码