CAN201 网络编程 笔记

CAN201


Assignment 1
回顾Ass1

问题描述:

主机A和B先后启动 相同的python应用 ,python文件目录下有个share文件夹

  1. A的share文件夹内被添加了一个10MB文件,A向B发送10MB的文件,B接受10MB文件,存储在share文件夹中。
  2. 随后,B的share文件夹内被添加了500MB的文件和一个包含50个小文件的文件夹,B向A发送,发送开始的0.5s后A程序被关闭,随后A被重启,要求A接受以上所有文件,存储在share文件夹中。。
  3. 随后,A的500MB文件被更新了10%的内容,需要将新的500MB文件同步到B,存储在B的share文件夹中。

需求分析(按照测试过程排序:

  1. 新文件的检测
  2. 文件的发送和接受,保存
  3. 新文件夹的检测
  4. 多个文件的发送和接受
  5. 接收时被kill,重启后继续接受
  6. 文件被变更的检测

简单来说就是文件的检测发送

一. 文件的检测,修改检测,读取,保存。文件夹的添加(其实就是文件的添加,路径上包含了个文件夹而已)
二. tcp发送,tcp接受
三. tcp断点重传/续传

实现思路(一个一个说明:

一.
python查看文件夹下所有文件 使用os模块,检测文件夹下所有文件。
进而使用一个列表存储所有文件路径,每隔几秒和上次的列表比较,进而发现新添加的文件。
Python创建目录文件夹 进而使用分割字符串找到share文件夹之内的文件夹,在接受方创建文件夹
Python中打开文件的方式(With open) 读取和写入,保存文件
【详细】Python检查文件更新改变功能 通过查询并记录修改时间以检测文件修改,此外还可以通过查询记录md5来检测文件修改
二.
发送文字和文件的代码实现详见lab3
如何通知对方文件路径:

  1. 法一,发送二进制文件过去时,在消息流的最开头附加文件路径,随后使用如”###“的符号拼接文件,接受端split(“###”)后即可区分路径和文件流
  2. 法二,交流,整个文件传输过程包含 第一次发送与接受 文件路径,第二次发送与接受 文件内容

如何文件传输:
两台主机各自开放k端口用于接受,发送时朝对方 ip:k 端口发送

  1. 使用切片传输,将文件按大小切成许多分片,依次发送。接收方依次接受切片。
  2. 直接sendall方法发送,接收方循环读取。send和sendall区别

考虑使用多线程(单线程完全也ok:
例如文件被拆分成1,2,3,4,5,6个片,线程a和b同时发送,多线程切片需要额外附加当前切片下标

  1. 多线程发送交错切片,a负责发1,3,5,b负责发2,4,6 。 接收方使用一个变量记录当前写入了多少,然后忙等未到达切片。或者接收方使用list顺序存储(或使用字典配合下标存储)已到达切片
  2. 多线程发送连续切片,a发1,2,3,b发4,5,6 。接收方接受123和456后先保存为临时文件,随后合并
  3. 多线程乱序发送切片,如同1,不推荐

三.
任何方法都可以断点重传
单线程需要携带下标才能断点续传,多线程必须要携带下标,这里说明使用连续切片的做法(交错切片实现续传和连续切片差不多,而且需要即时写入

文件传输时,pc_a被kill了,pc_b正在发东西的发送线程会报错,使用try-except语句即可捕捉报错而不终止。
因为pc_b此前已经与pc_a建立连接,又因为pc_b会拒绝同一ip与port套接字发来的connect请求,pc_a被强制关闭并重启后的pc_a的发送线程会报Connection refused异常(或是pc_a的接受线程会报Address already in use端口被占用异常,记不清楚了),所以需要给接受线程的套接字添加端口复用属性。

  1. 断点重传
    发送文件时整段代码套上循环, 判断接受端文件写入成功后break,否则就一直重建链接发送该文件。
    接收端接受缓冲区返回为空时,代表连接可能已经断开,这时就可以重新accpet了。
    -接收端接受进程只负责从头开始接受文件,重启后它将会覆写文件

  2. 断点续传
    文件切片携带下标后,通过收到多少文件就写多少文件,就可以尽可能多的保存最多文件。由于下标的存在,我们可以知道文件传输到哪了。
    记录成功发送的切片下标,try捕捉异常后按照记录的成功下标后的内容续传文件片继续传。
    -发送端和接收端依靠传输开始时的交流判断此次发送是覆写完整文件还是续传文件片

复习

大概记一下

0.概述

互联网服务提供商(Internet Service Provider),简称ISP,指的是面向公众提供下列信息服务的经营者

+传输计算

在这里插入图片描述

1. 应用层Appilication Layer

在这里插入图片描述

HTTP (Hypertext Transfer Protocol)超文本传输协议

使用TCP 80端口,客户端向服务器请求资源
HTTP is stateless: server maintains no information about past client request
to be state is comples: 使用cookies,state需要在连结中断后同步
使用web cache减少对服务器的访问。

  1. Non-persistent HTTP 非持久HTTP
    一个资源创立一个TCP连结,多个资源创立多个TCP连结,耗时费力,也可以open parallel TCP connections来提高速度。
  2. Persistent HTTP 持久HTTP
    多个资源可以通过一个TCP连结传输,获得每个资源只需要经过一次RTT。

RTT (Round Trip Time):
包从客户端到服务器再返回到客户端所用的时间。
非持久HTTP连结相应时间=2*RTT+file transmission time
在这里插入图片描述
在这里插入图片描述
cache减少线路负载
在这里插入图片描述

cache可能会过期,没过期时服务器返回空内容和304码,过期时返回更新后的内容。

FTP

使用TCP

+Email

SMTP(Simple Mail Transfer Protocol)简单邮件传输协议 :基于TCP和DNS, 用户邮件被发送方邮件服务器发送到相应接收方的邮件服务器上。
在这里插入图片描述

+DNS (Domain Name System)

域名解析负责将便于人类理解的域名解析为便于使用的IP地址,通常由分布式层次化的域名服务器处理。
Local DNS name server:存储经常用的网址解析,由ISP提供。
root DNS server:根域名服务器,可以返回顶级域服务器ip
TLD Top-level domain server:顶级域服务器,如 .com可以返回权威域名服务器ip
Authoritative DNS servers: 权威域名服务器,可以返回IP

每个服务器使用cache记录解析过的域名,如何解决ip变更:经过TTL后,清除缓存,重新查询

查询方式:
左:Iterated query(local DNS疯狂问人,迭代),右:Recursive query(好心人一路送到底,递归)
在这里插入图片描述

+P2P

P2P特点:

  1. No always-on server
  2. Arbitrary end systems directly communicate
  3. Peers change IP address

普通C/S:
一个文件的传输时间取决于服务器上载N个文件/一个用户下载一个文件
N变大时很满

P2P:
一个文件的传输时间取决于服务器上载一个文件/一个用户下载一个文件/整个网络上载N个文件
目的:提升整个网络的上载下载量。
在这里插入图片描述
BitTorrent:文件被分为256kb的chunks。
请求块:稀有优先(rarest first),优先请求torrent内稀少的块。
发送块tit-for-tat:谁给我的块速度快,我就给谁发送块(选出前几个),每30s随机选择一位幸运儿满足ta的块请求

TCP/IP编程

在这里插入图片描述

CDN

2. 传输层 Transport Layer

Provide logical communication between app processes running on different hosts.Transport protocols run in end systems。运行在端系统中的进程间的通信

Connectionless demux:所有应用用一个socket收发,混乱
Connection-oriented demux:每个应用不同的socket便于传输层区分提交。

多路复用和解复用Multiplexing and demultiplexing

multiplexing:将从应用层的sockets传来的data添加transport header,交给网络层发出去
demultiplexing:将从网络层传来的segment按照header,交给相应的上层socket

IP datagrams and segment(IP数据报和段)

IP datagram属于network layer,包含source IP和dest IP,其内payload是一个segment。
segment属于transport layer,包含source port和dest port。
ip和port分开放:network layer负责网内传输,需要ip。transport layer负责将数据提交给本机上层应用,使用ip,port来区分不同的sockets。

UDP (User Datagram Protocol)

UDP的特点:

  1. Unreliable data transfer
  2. Does not offer reliability, flow control, congestion control, timing, throughput guarantee, security, or connection setup,

udp简单,头小,速度快

checksum

将segment内容(包含头部)相加,进位的话再加到个位,最后的和取反码。
在这里插入图片描述

+TCP reliable data transfer protocol

TCP的特点:

  1. Reliable transport
  2. Flow control
  3. Congestion control
  4. Does not offer timing, minimum throughput guarantee, security
  5. Connection-oriented

SEQ:Sequence numbers标号,“我发的数据是从{SEQ}开始的”
ACK:Acknowledgements接收者告诉发送者包接受成功,“数据收到了,下次发给我从{ACK}开始的数据”
NAK:接收者告诉发送者数据有错误,可被省略(直接ACK超时代替)。

意料之中的错误处理如下:
在这里插入图片描述
基本上完成TCP雏形,但一次发送一个包效率有点低,真实的TCP改进了一个发送周期内包的发送数量-pipeline。
在这里插入图片描述

  1. GO-Back-N
    接收者发送目前为止最靠后并且连续的包的ack(从哪边断out-of-order,ack哪边,又名累计确认cumulative ACK
    发送者发现ack超时后,从接受到的最大的ack把之后的包再发一遍(ack之前的正常发送,之后的出问题,那就重传之后的)
    在这里插入图片描述

  2. Selective repeat
    接收者只ack在自己窗口内的包,对于窗口外的包将会舍弃,窗口内的包会缓存。窗口随着in order包的接受而滑动。
    发送者依次发送它窗口内的所有包,对于第n个包,如果没收到ack且超时,将会重发第n个包。窗口随着ack的更新而滑动。sequence number最大值应当大于窗口的两倍以避免同一个窗口内出现两个一模一样的seq,不知道改把数据包放哪。

TCP 超时设置 RTT (Round Trip Time)

不能太短不能太长。
采用估计RTT,累计过去的RTT和刚刚采样得到的RTT作平均
EstimatedRTT = (1- a) * EstimatedRTT + a * SampleRTT
a取0.125

还可以加上一个safety margin以减少超时次数
DevRTT = (1-b)DevRTT +b * |SampleRTT-EstimatedRTT|
(typically, b = 0.25)
TimeoutInterval = EstimatedRTT + 4
DevRTT

一些重传场景
在这里插入图片描述
快速重传:收到三个相同的ACK,直接重传而不等待超时
flow control:TCP头中包含rwnd值来表示对方的剩余缓冲空间,发送方藉此调整自己的发送速度。r指receiver

TCP三次握手,四次挥手
SYN比特位为1代表当前为SYN包
ACK比特位为1代表当前为ACK包
在这里插入图片描述

TCP congestion control拥塞控制

既包发的太快,导致许多包在网络中堵车”too many sources sending too much data too fast for network to handle“
解决方法:AIMD ,Slow start

cwnd:congestion window,既发送者的窗口
AIMD (additive increase multiplicative decrease)加增乘减:

  1. 加增,每次RTT增加1个cwnd的MSS(Maximum Segment Size 段大小)
  2. 乘减,发生loss时,cwnd *= 0.5
    在这里插入图片描述

Slow Start慢启动(启动的时候很慢,增长的倒是挺快):

  1. 开始传输时,cwnd = 1 MSS,每个RTT过后,cwnd * =2
  2. 检测到timeout类型loss,cwnd=1MSS,重新慢启动
  3. 检测到3个重复ACK类型loss,开始TCP RENO,cwnd * = 0.5,随后以线性增长
  4. 实际应用时,ssthresh被设置为loss时cwnd的一半,cwnd再次达到ssthresh后开始线性增长
    在这里插入图片描述

3. 网络层 (数据平面)Network Layer - data plane

是主机到主机的传输。host to host
发送端将传输层的segment包装(encapsulate)成网络层的datagrams,接收端反之。

Forwarding: packets from router’s input to appropriate router output, 类似汽车在某个十字路口的抉择,属于数据平面
Routing:determine route taken by packets from source to destination,类似整个汽车旅途路线的规划,属于控制平面

Router

左input,右output,使用buffer一定程度解决丢包。
buffer设置为多大:一个RTT时间(250msec)乘线路容量。e.g., C = 10 Gpbs link: --》2.5 Gbit buffer。或者再除以一个根号N,N为流的数量
在这里插入图片描述
IP地址:
32-bit的标识符,用于标志子网子网内的对象,CIDR中标志网络前缀主机号
子网掩码mask,ip屁股后面跟着斜杠后面的数字,表示32bit的ip地址中前多少位是子网部分的ip。符合同一个子网前缀的ip都是同一子网下的主机。ip和掩码做AND操作可得到子网interface 的 ip。
在这里插入图片描述
CIDR Classless Inter Domain Routing 无类别域间路由技术:
将ip划分为网络前缀Subnet part+主机号Host part

  1. Subnet portion of address of arbitrary length
  2. Address format: a.b.c.d/x, where x is # bits in subnet portion of address
  3. 8-bit,16-bit,24-bit长度的子网称为A,B,C类网。无论什么网,最少保留最后2bit留给主机部分,总不能一个子网下啥都没有
  4. 通常Host part比特位全置为0的ip作为网络地址,Host part比特位全置为1的ip作为广播地址。在考虑子网内可用主机号的时候,需要排除这两个ip。

DHCP:Dynamic Host Configuration Protocol 动态主机配置协议:
当设备加入网络时,由一个DHCP服务器来给这个设备分配一个动态ip。
动态:断开连结后再次加入可能会分配一个新的ip。

200.23.16.1/23 Subnet part200.23.16.1/23 Host part
11001000 00010111 0001000000000001

每八位:

11111111
1286432168421

路由表,匹配表项内的IP地址和子网掩码mask,然后根据端口转发forward:
在这里插入图片描述

Longest prefix matching最长前缀匹配 :
转发时,根据掩码找到最长的前缀进行路由表的匹配。

IP datagram

IP 数据报内容
在这里插入图片描述

NAT

网络地址转换(network address translation),将本地网络内的 不同的ip:不同的端口 映射到一个公网ip的 不同端口,缓解了ip地址数量上的紧张局面。
端口数量0-65525,一个公网ip可以容纳近六万个连结。
实现:

  1. 内传外:(source IP address, port #)->(NAT IP address, new port #),同时存储这个映射
  2. 外传内:找到之前存储的映射,(NAT IP address, new port #)->(source IP address, port #)

缺点:

  1. 按照分层,路由器应该只负责处理到layer 3,而NAT修改了数据的端口号。
  2. ip地址短缺应当被IPv6解决。
  3. 公网无法访问子网内的用户

在这里插入图片描述

IPv6

ip地址变成128bit,添加flow label,移除checksum等改变。

ip设备是逐渐更新换代成ipv6的,将ipv6包装到ipv4里面增加兼容性
在这里插入图片描述

Generalized Forwarding and SDN

广义转发和软件定义网络

Generalized Forwarding广义转发:不仅仅根据ip和掩码,而是筛选数据内的信息(使用什么端口,从哪个ip到哪个ip,是否是TCP握手的数据等)。然后匹配表项,进行相应的转发的操作。
在这里插入图片描述
网络中的 匹配+操作 的设备。SDN指这些操作是由软件定义的,可以写代码修改其中的逻辑和规则,更灵活。
在这里插入图片描述

网络层 (控制平面) Network Layer - control plane

解决了整个旅途路程应该怎么走的问题。

  1. per-router control plane:由路由器决定转发方向(每个路口看一下路牌,决定向哪走)
  2. logically centralized control plane:由远程控制器remote controller与每个路由器交流,算出最优路线后再把结果告诉每个路由器 (看百某地图告诉自己应该在路口向哪走)

路由选择算法

Dijkstra算法,去年考的是填表格
Bellman-Ford算法

RIP Routing Information Protocol 路由信息协议

为最早出现的距离向量路由协定。属于网络层。每30s交换信息让路由器动态的适应网络连接的变化,这些信息包括每个路由器可以到达哪些网络,这些网络有多远等。

每个节点存储到其他节点的信息,随着其他节点发给自己的更新来更新自己的表,并将自己的更新通知给别的节点

OSPF Open Shortest Path First 开放式最短路径优先

相比于RIP,OSPF协议更优。
将一个区域的路由器划分为一个autonomous systems “AS”。

  1. Intra-AS routing: 在一个AS内的routing,可以专注于效率。协议为interior gateway protocols (IGP)内部网关协议,最常使用的三种(RIP:Routing Information Protocol,OSPF: Open Shortest Path First,IGRP: Interior Gateway Routing Protocol)
  2. Inter-AS routing: 在AS’s之间的routing,牵扯到政策。协议为BGP Border Gateway Protocol

在这里插入图片描述

BGP Border Gateway Protocol 边界网关协议
  1. eBGP,外部边界网关协议,从邻居AS那得到可达信息
  2. iBGP,内部边界网关协议,把可达信息传播到所有AS内的路由,决定一个最好的往别的AS传的路径

抉择:如果一个AS的内部路由有两个该AS的边界路由可以到达目的地,Hot potato routing:选择最少intra-domain cost的路线,不考虑inter-domain cost。
在这里插入图片描述

SDN control plane

软件定义openflow,更灵活
在这里插入图片描述

ICMP The Internet Control Message Protocol 互联网控制报文协议

被主机和路由器使用以交流网络层的信息,(如网络通不通、主机是否可达、路由是否可用等网络本身的消息)

  1. ping命令,侦测另一个主机是否可达,只知道是否可达,不知道其中每一跳的相关信息。
  2. Traceroute,设TTL为n,数据包每经过一个路由,TTL便会减1,当TTL为0,路由器就把这个包给抛弃了,并同时产生 一个超时的ICMP数据报给发送方主机。主机依次发送TTL=1数据报,接受超时数据报,发送TTL=2数据报,接受超时数据包,即可得知在数据发送的每一跳上是怎样的

4. 链路层 局域网 Link Layer

链路层属于网卡负责。
发送端:将数据报datagram包装成帧frame,添加检查位,rdt,flow control
接收端:反之。

差错检测:校验和和CRC

Parity checking

奇偶位检验,可以知道数据中1的数量是奇数还是偶数,
数据中1出现奇数次->parity bit=0
在这里插入图片描述
在此基础上出现了2D parity checking,将一个两维数据每个轴上记录奇偶,进而达到检测和校正的目的。

Checksum

将数据相加,如果进位就作为个位1再次加上,最后取反码。

Cyclic redundancy check CRC 循环冗余校验

数据D后加r个0作为算法中的被除数
长度为r的CRC bits记录算法中的余数R
规定一个长度为r+1的pattern作为算法中的除数G。

pattern的表示:
pattern将会表示为如下形式:
X8+X2+X+1转换为100000111,从右往左,从2的0次方开始,挨个置为1。
下图的pattern表示为X3+1,既1001,长度为4=r+1,r=3,len®=3=D后面加上的0
在这里插入图片描述

多点访问协议

物理传输线路得被多个人共同使用,得规定使用的规则
三种方法:

  1. Channel partitioning,分为TDMA和FDMA,在时间和频率上分开。
  2. Random access,传输时占用整个信道,需要检测如果发生多人同时传输的情况时的碰撞(collision)和之后的恢复。经历过多个时期(slotted ALOHA,ALOHA,CSMA,CSMA/CD, CSMA/CA)
    CSMA (carrier sense multiple access):listen before transmit,信道空闲时发送,繁忙时等待。
  3. Taking turns,分为Polling和Token passing
    Polling轮询:Master node “invites” slave nodes to transmit in turn
    Token passing令牌传递:Control token passed from one node to next sequentially.

+LANs

既局域网

MAC

IP主要为网络上层所使用,在查找,使用时是分层的,大到小,互联网到子网到主机。
MAC地址为网络底层所使用,使用mac地址为两个物理(线缆,无线电波)层面上的设备间建立连结。与网卡相绑定,是网络设备的唯一标识。

MAC地址48bit,通常以12位16进制数表示,如12-34-56-78-90-AB

Address Resolution Protocol ARP 地址解析协议

ARP table: 将设备(host,router)的MAC地址与IP地址记录成表,表项目< IP address; MAC address; TTL>,在TTL时间过后表项将会被删除以期待更新。

如果被接收者的mac不在表中,设备将会广播broadcast ARP query packet以发送一个IP地址,被广播的设备的IP地址如果匹配,则会返回自己的MAC地址。

ARP is “plug-and-play” 即插即用的。

Ethernet

发展历程,bus-》star

早期是基于碰撞检测的,但是总线的某一个点出问题了整个网就寄了。
后面出现的交换机switch,交换机为局域网内的每个设备提供一个接口,自己来根据帧内的mac地址转发内容到相应的端口,只要铁盒子switch不寄就没大事,出事了也好找。
在这里插入图片描述
Switch forwarding table:交换机转发表,表项<MAC addr, interface, Time>

  1. 新出现设备向交换机发送信息,交换机会记录它从哪个MAC来,既自学习“self-learning”
  2. 交换机要向没见过的设备发送,交换机向所有接口发送消息,既泛洪“flood”
  3. 交换机可以与交换机组合以扩增局域网。
    在这里插入图片描述
路由器和交换机差别-知乎用户

工作层次不同:
交换机主要工作在数据链路层,路由器工作在网络层。
转发依据不同:
交换机转发所依据的对象时:MAC地址。(物理地址)
路由转发所依据的对象是:IP地址。(网络地址)
主要功能不同:
交换机主要用于组建局域网,
路由主要功能是将由交换机组好的局域网相互连接起来,或者接入Internet。
交换机能做的,路由都能做。交换机不能分割广播域,路由可以。路由还可以提供防火墙的功能。路由配置比交换机复杂。交换机是看门大爷,路由是邮差。

VLAN Virtual Local Area Network 虚拟局域网

同一交换机定义不同接口属于多个局域网
在这里插入图片描述

最后提了下数据中心网络Data Center Networks
在这里插入图片描述

5. 网络安全

confidentiality, authentiacation, message integrity, access and availability
机密性、身份验证、消息完整性、访问和可用性

+加密原理 解决机密性

对称加密:DES (Data Encryption Standard)和 AES (Advanced Encryption Standard)

Caesar Cipher凯撒加密法:字符之间的映射,a换成m,b换成n。
在这里插入图片描述
DES:使用56bit密钥加密64bit明文块,对称加密 指 加密方和解密方 使用相同的密钥进行加密和解密

AES是DES的改进方案之一,解决了DES会在一天之内被破解的问题,密钥可以是128,192,256bit。

非对称加密: RSA (Rivest, Shamir , Adleman algorithm)

非对称加密,B公开自己的公钥,保留自己的私钥。发送方A使用B的公钥进行加密,接收方B使用自己的私钥进行解密(只有私钥才能解密公钥加密后的密文)
在这里插入图片描述
非对称加密RSA密钥:
基本思想:( a mod n )d mod n = ad mod n
需要做到两点:KB-(KB+(m))=m和given public key KB+,can not compute private key KB-
额外还有个性质:KB-(KB+(m))=KB+(KB-(m))=m

  1. 找到两个大的质数prime number p和q,(如每个1024bit
  2. 计算n=pq,z=(p-1)(q-1)
  3. 选择e,使得e<n,并且e与z互质
  4. 选择d,使得ed-1与z整除,(ed mod z=1)
  5. public key is (n,e), private key is (n,d)
  6. m是原文,c为公钥加密后的密文在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

Authentication认证 解决消息完整性和身份验证

如何向接收方证明消息的发送者确实是消息上所说的发送方?
携带ip地址和加密密码的消息都可被回放攻击所击破(record and playback)
使用临时字段(nonce) R进行密钥验证的方法也可被截获并篡改。

在这里插入图片描述

终极方案:数字签名

数字签名Digital signatures

数字签名:将原文plaintext使用私钥加密得到密文KB-(m),随后发送消息的m以及密文KB-(m),代表B这个人使用自己的私钥签署了一条消息m,对方可以使用公开的B的公钥来解密密文的结果和m比对,验证消息没有被篡改(要不然结果不同)以及验证消息的发送方(使用你的公钥解密出来了信息,那么一定是你用了你的私钥加密)。

Message digest信息摘要:使用哈希算法 (MD5或SHA-1) 得到plaintext的概括,使用私钥加密哈希值而不是全文,对方则将plaintext的全文也哈希,与公钥解密出的哈希比对,达到上面同样的效果
在这里插入图片描述

+认证机构Certification authorities

如何证明你所说的公钥就是你的公钥,而不是别人的公钥。如何稳定可靠的得到一个人的公钥
答案是使用一个公开的可信任的机构,每个人在那个机构绑定自己的身份和自己的公钥,也就是证书。
这样,当想要一个人的公钥时,直接拿这个人所发过来的证书去问这个机构。

证书怎么来:B将自己的公钥给机构,机构使用机构的密钥加密,得到一个B的证书
已知证书后怎么验证:使用机构的公钥对证书进行解密,即可得到B的公钥
在这里插入图片描述

各个层次安全性

Secure e-mail

想要机密的confidential emial:
KS可理解为一个临时的动态的随机生成的对称的会话密钥(session key),使用这个密钥加密明文。同时通使用对方公钥加密自己杜撰的对称密钥。
将以上KS(m)和KB+(KS)一起发过去,对方使用自己私钥依次解密临时的对称密钥进而解密明文
在这里插入图片描述
想要认证身份provide sender authentication:
既数字签名那的思想
在这里插入图片描述
又要机密性,又要发送者身份验证,又要消息完整性检查
在这里插入图片描述

SSL (Secure Sockets Layer安全套接层)

confidentiality,integrity,authentication
机密性、完整性、认证

介于应用层和TCP之间的安全套接层
提供安全的TCP连结,过于复杂没看
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

IPsec

data integrity,origin authentication,replay attack prevention,confidentiality
数据完整性、源身份验证、防止重播攻击、保密性

What is network-layer confidentiality:

  1. 数据报datagram的payload(内容)应当是加密的
  2. 所有从一个主体entity到另外一个主体的数据不会被第三个人知道
SA Security associations 安全协会
  1. 发送数据之前,SA从发送entity到接受entity被建立,SAs是单工(simplex,只有一个方向的)
  2. 数据发送结束,接受并维护SA的状态信息(IP是无连接的,IPsec是面向连结的connection-oriented)

SA存储了加密方信息,使用什么加密方法等。
分为AH和ESP两种协议
在这里插入图片描述

SAD Security Association Database

在这里插入图片描述

存储SA的数据库

  1. with n salespersons, 2 + 2n SAs in R1’s SAD
  2. when sending IPsec datagram, R1 accesses SAD to determine how to process datagram.
  3. when IPsec datagram arrives to R2, R2 examines SPI in IPsec datagram, indexes SAD with SPI, and processes datagram accordingly.

流程:
在这里插入图片描述

Security Policy Database (SPD)

info in SPD indicates “what” to do with arriving datagram
info in SAD indicates “how” to do it

VPN Virtual Private Networks 虚拟专用网络

可以为机构提供隐私的网络,以及通过公共因特网发送办公室内部消息。

防火墙

在这里插入图片描述

stateless packet filters 无状态分组过滤器

router firewall根据IP地址,TCP资源,SYN和ACK比特位来过滤
在这里插入图片描述

stateful packet filters

ACL (Access Control Lists访问控制表):记录匹配值和相应的操作allow/deny

stateless packet filter,不跟踪连结状态,和无状态包过滤差不多,但是使用ACL。
stateful packet fulter,tracks status of every TCP connection. 跟踪建立(setip,SYN),关闭(teardown,FIN)。超时的未活动连结将会被拒绝传输包
在这里插入图片描述

application gateways 应用程序网关

根据应用程序的内容进行过滤
比如,只允许来自application gateway server的包往外telnet,这样就可以在application gateway这个地方在应用层层面进行分析检查过滤
在这里插入图片描述
不足:

  1. IP spoofing,伪造IP
  2. 特殊对待多个应用程序,需要多个应用程序网关
  3. 需要在用户web browser里面指定代理服务器地址
  4. tradeoff,与外部通信的自由度和安全之间的平衡

IDS Intrusion detection systems

  1. deep packet inspection,深度检查包中的内容,将包中字节与病毒数据库的已知字节进行比对
  2. examine correlation among multiple packets,检查分组相关性,判断是否有害

在这里插入图片描述

  • 22
    点赞
  • 91
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值