计算机网络知识整理
OSI(Open System Interconnection Model)七层协议:应用层(Application Layer),表示层(Prensentation Layer),会话层(Session Layer),传输层(Transport Layer),网络层(NetWork Layer),数据链路层(Data Link Layer),物理层(Physics Layer)。(从上到下)
TCP/IP四层协议:应用层,传输层,网络层,网络接口层。
应用层、表示层与会话层面向用户,传输层完成数据传送服务。
物理层
有两个重要的设备名称,中继器(Repeater,也叫放大器)和集线器。
激活、维持、关闭通信断点之间的机械特性、电气特性、功能特性以及过程特性。为上层协议提供一个传输数据的可靠的物理媒体,屏蔽掉不同传输媒体和通信手段的差异。
数据链路层
两个重要设备时网桥和交换机。
两台设备之间的数据传输,可以看成在一条管道上进行,传送的数据单位是帧,每一帧包括数据和必要的控制信息(如同步信息,地址信息,差错控制)等,链路层保证被传输数据的正确性。
三个问题:
(1)封装成帧(数据块):将数据分别添加头部与尾部,构成一帧,头部与尾部的作用是进行帧定界。
(2)透明传输:指不管所传输的数据是什么样的比特组合,都应当能够在链路上传送。因此,链路层就“看不见”有什么妨碍数据传输的东西。
当所传送的数据的比特组合与某个控制信息一样时,就必须采取一些措施,防止接收方认为这样的数据是某种控制信息,这样才能保证数据链路层的传输是透明的。
透明传输的解决方法:
-
字符计数法:每一帧数据的头部设一个计数字段标注帧内字符数,但是缺点是如果第一帧的计数错了,导致第一帧结束位置发生错误,那么后边的一连串全错了。
-
字符填充法:SOH(Start of header)是帧首部的第一个标记开始的字节,EOT(End of transmission)是帧尾部的结束字节。
当传输的帧都是由文本文件组成时(即文本文件都是从键盘上输入的,都是ASCLL码),都可以直接传输,不会出现什么问题。
但是当传输的帧是由非ASCLL码的文本文件组成时(二进制代码的程序或者图像),这种情况下,帧数据内部可能刚好出现SOH或者EOF的组合,那这样在接收端可能就会错误的找到了帧的边界EOT,那这样的EOF就是上面所说的“妨碍数据传输的东西”,所以在这种情况下可以在“不正常”的SOH或者EOT前边紧接着加一个ESC,那么接收端看到ESC就会先把ESC移除掉,然后继续接收“不正常”的SOH与EOT,遇到正常EOT的结束传输。
(3)差错检测
误码率定义:传输错误的比特所占传输比特总数的比率称为误码率BER(Bit Error Rate)。
一般采用循环冗余检验CRC的检错技术。
补充奇偶校验:
奇校验:数据 + 校验码中的1的个数为奇数
偶校验:数据 + 校验码中的1的个数为偶数
缺点:如果两位同时反转,检验不出来。
网络层
网络层重要的设备是路由器(router)。
通过IP寻址建立两个节点之间的连接,之后把运输层产生的报文段和用户数据段封装成包进行传送,发送时包时不需要建立连接,每一个包独立发送,不提供端到端的可靠服务,只是尽最大努力进行交付。
几个协议:
IP协议:主流版本是IPv4,也有IPv6,两者最大区别是前者\(32\)位,后者\(128\)位。
ARR协议(地址解析协议 Address Resolution Protocol):根据IP地址获取物理地址的一个TCP/IP协议,工作原理如下:
- 首先,每台主机都会在自己ARP缓冲区建一个ARP列表,用于表示IP地址与MAC地址的对应关系。
- 当源主机需要将一个数据包发送到目的主机时,会首先检查自己ARP列表是否存在该IP地址对应的MAC地址。
- 如果存在,直接发送到这个MAC地址;
- 如果不存在,就向本地网段发送一个ARP广播包(广播包里有源主机的IP地址,MAC地址,用于目的地址记录),用于查询此目的主机对应的MAC地址。
- 此时,网络中所有的主机收到这个ARP请求,会检查目的IP与自己的IP是否一致。
- 如果不相同就忽略这个数据包;如果相同就先将发送端的MAC地址和IP地址添加到自己的ARP列表(这个ARP缓存表存的就是IP与MAC的对应),如果已经存在该IP信息,直接覆盖即可。
- 目的主机自己存下来之后,就给源主机发送一个ARP响应数据包,告诉源主机自己就是它想要找到MAC地址。
- 源主机收到这个ARP响应数据包之后,将目的主机的IP地址与MAC地址添加到自己ARP列表,并利用此信息开始数据传输;
- 如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。
RARP协议(逆向地址转换协议):由48位MAC地址获得网络层的32位IP地址。
ICMP协议(网际控制报文协议 Internet Control Message Protocol)
IGMP协议(网际组管理协议 Internet Group Management Protocol)
IP地址的划分
A类地址:1个字节的网络地址\((net-id)\)与3个字节主机地址\((host - id)\)组成。地址范围\(1.0.0.1\)到\(127.0.0.0\),网络地址最高位必须是0,所以七位表示网络地址\(127 = 2^8 - 1\)。其中\(127.0.0.1\)是回环地址,用于本机测试。
B类地址:2个字节的网络地址\((net-id)\)和2个字节主机地址\((host - id)\)组成。最高位必须是\(10\)(因为127是0111 1111),地址范围:\(128.0.0.0\) 到\(191.255.255.255\)。
C类地址:3个字节的网络地址\((net-id)\)和1个字节主机地址\((host - id)\)组成。最高位必须是\(110\)(因为191是1011 1111),地址范围:\(192.0.0.0\)到\(223.255.255.255\)。
D类地址:用于多点广播。最高位必须是\(1110\)(因为223是1101 1111),地址范围:\(224.0.0.0\)到\(239.255.255.255\)。
\(0.0.0.0\)对应于当前主机(设备初始化期间,设备在分配可用IP之前,都用这个)。\(255.255.255.255\)对应于当前子网的广播地址。
传输层
重要设备:网关
网络层为主机之间提供逻辑通信,而传输层为应用进程之间提供通用的数据服务(端到端的服务)。拥有流量控制(抑制数据传输的速率)、拥塞控制(防止过多的数据注入网络)等功能。为上层协议提供端到端的可靠透明的数据传输服务。
主要协议
传输控制协议TCP:面向连接,提供可靠的数据传输服务。
用户数据报协议UDP:面向无连接,不提供可靠交付。
运行在TCP上的协议:
- HTTP(Hypertext Transfer Protocol,超文本传输协议)Web服务器传输超文本到本地浏览器的传输协议。端口:80
- HTTPS(HTTP over SSL,安全超文本传输协议),HTTP的安全版本。端口:443
- FTP(File Transfer Protocol,文件传输协议),用于文件传输。端口:21
- SMTP(Simple Mail Transfer Protocol,简单邮件传输协议),用来发送电子邮件。端口:25
- SSH(Secure Shell,用于替代安全性差的TELNET),用于加密安全登录用。
运行在UDP协议上的协议:
-
SNMP(Simple Network Management Protocol,简单网络管理协议),用于网络信息的收集和网络管理。
-
NTP(Network Time Protocol,网络时间协议),用于网络同步。
-
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),动态配置IP地址,是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。
-
DNS(Domain Name Service,域名服务),用于完成地址查找,邮件转发,通过主机名,最终得到该主机对应的IP地址的过程叫域名解析。
ARP协议用来IP地址转换为MAC地址,DNS协议用来将域名转化为IP地址(也可以逆转化)
它的背景:TCP/IP中使用的是IP地址和端口号确定网络上某一台主机的某一个程序,为啥直接用域名进行通信呢?
因为IP地址长度固定,域名长度不固定,不便于计算机处理,IP地址对于用户来说记忆不方便,但是域名确实便于用户的,例如百度域名www.baidu.com。
所以说IP地址面向主机,域名面向用户。
最初域名与IP地址保存在一个本地hosts文件中,但后来由于越来越多计算机接入网络,不便于管理,因为无法确保每一台计算机都有最新版本的本地hosts文件,所以出现了DNS系统。
DNS系统工作原理(端口号53):一个数据库维护着每个主机IP和主机名的对应关系,如果新计算机入网,那么将其注册到数据库中,当用户输入域名时,会自动查询DNS服务器,DNS服务器检索数据库,得到对应的IP地址。
会话层
会话层管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。会话层还利用在数据中插入校验点来实现数据的同步。
表示层
用于数据转换,以保证一个主机的应用层信息可以被另一个主机的应用程序理解。数据转换包括数据的加密、压缩和格式转换等等。
应用层
为操作系统或网络应用程序提供访问网络服务的接口。
- 数据传输基本单位是报文。
- 主要包含协议:FTP(文件传送协议)、Telnet(远程登陆协议)、DNS(域名系统)、SMTP(邮件传送协议)、POP3(邮局协议),HTTP(超文本传输协议)。
网络分层的好处?
- 简化问题难度和复杂度。各层独立,将大问题分割成小问题。
- 灵活性好。一层技术发生变化,其他层不受影响。
- 易于实现和维护。
- 促进标准化工作。每层功能可以相对简单的被描述。
TCP与UDP
TCP:Transmission Control Protocol,传输控制协议
UDP:User Datagram Protocol,用户数据报协议
- TCP/IP即传输控制协议,面向连接,发送数据前先建立连接,提供可靠服务,数据不会丢失,类似于打电话。
- UDP无连接,发送数据不需要建立连接,不可靠,类似于发微信,QQ。
TCP三次握手(建立连接的过程)
- 客户端向服务器发送SYN(建立联机)连接请求报文;
- 服务器端返回SYN,ACK;
- 客户端发送ACK。
如果已经建立连接,客户端出现了故障?
保活定时器:服务器没收到一次客户端请求都重新复位一个定时器,若超过2小时没有收到客户信息,它就发送探测报文段,如果发送10个收不到响应,那么终止连接。
TCP四次握手
- 客户对服务器发送关闭连接请求,客户将FIN(结束) = 1
- 服务器收到客户的关闭连接请求,回复一个ACK确认,此时服务器处于CLOSE_WAIT状态,但是给客户发消息,客户仍然可以接收消息(不能直接断开的原因是:服务器可能有数据还没发完)。
- 服务器确定不在给客户发消息后,将FIN = 1,对客户发送,准备关闭连接消息,
- 客户收到服务器准备关闭连接消息后进入TIME_WAIT状态(TIME_WAIT状态用于重发可能丢失的ACK报文),向服务器发送ACK = 1:已收到关闭连接消息
为什么连接需要三次握手而关闭需要四次握手?
因为服务器收到客户端的SYN连接请求后可以直接回复SYN+ACK,ACK用来应答,SYN用来同步;但是关闭连接时,当服务器收到FIN后,很可能不会立即关闭SOCKET,所以只能先回复一个ACK,等消息彻底发送完毕才能回复FIN,因此需要四次握手。
TCP协议如何保证可靠传输?
-
停止等待:每发完一个分组就停止发送,等待对方确认。
-
超时重发:当TCP发送以段后,启动一个定时器,如果不能及时收到一个ACK,重发报文段。
-
流量控制(目的是让发送方发的慢点,好歹能让接收方接收到):利用滑动窗口机制,接收方窗口大小叫做RWND(Receiver Window),每次最多允许RWND大小的内容发送。
-
拥塞控制:当网路拥塞时,可能会造成网络拥堵,甚至网络瘫痪,TCP会减少数据的发送,防止路由器处理不过来导致数据丢失。
流量控制提供点对点的通信控制,拥塞控制就是全局网络流量控制。
- 慢开始:最开始拥塞窗口CWND为1,每经过一个轮次加倍(乘2)。当超过CWND门限后,使用拥塞避免算法。
- 拥塞避免算法:CWND超过慢开始门限,没经过一个往返时间RTT,CWND就线性增长,每次增加1。如果发现网络拥塞,就把慢开始门限设为原来一半,并重新设置CWND为1,重新慢启动。
- 快重传:接收方每收到一个失序的报文段,立即发送重复确认,发送方接收到3个重复确认后立即重传。
- 快恢复:发送方连续收到三个确认,将慢开始门限减半,将当前窗口设置为慢开始门限,采用拥塞避免算法。
-
数据包检验:如果校验包出错,那么丢弃报文并且不给出响应,TCP发送端超时后就重发数据。
-
对失序数据包重排序:接收方重新对每一个包编号排序传送应用层。
-
应答机制:收到数据后回复ACK。
-
丢弃重复数据。
HTTP协议?
工作于客户端-服务端架构之上,属于应用层协议,实现可靠“超文本”传输,例如文字、图片、音频、视频等等。
特点:
- 简单快速:客户端向服务器发请求,只需传送请求方法和路径即可。
- 灵活:HTTP允许传输任意类型数据。
- 无连接:限制每次链接只处理一个请求,处理完请求后,收到客户ACK后,断开连接。
- 无状态:协议对事务处理没有记忆
- 支持B/S(浏览器/服务器)以及C/S(客户/服务器)模式。
Http于Https的区别?
- 端口:Http是80端口,Https是443端口
- 安全性:http是明文传输,https用过SSL加密,更安全
- 是否付费:https需要拿CA证书(公钥基础设施,Public Key Infrastructure,PKI),要付费
- 连接方式:HTTP无状态连接;HTTPS由SSL+HTTP构建的 可进行加密传输、身份认证的网络协议。
加密算法
RSA算法(非对称加密):将明文分组,形成各自密文,最后合并形成最终密文,但是双方都是用同样的密钥,安全得不到保证。
AES算法(对称加密):生成两把密钥,私钥和公钥,私钥秘密保存,公钥发给信任客户,私钥加密:需要私钥或公钥;公钥加密:需要私钥
不可逆加密MD5,SHA:无法破解。
一次完整的HTTP请求经历的几个步骤?
输入网址到获取页面的过程:
- 浏览器进行DNS域名解析,得到IP地址;
- 根据IP地址,找到对应的服务器建立连接(三次握手);
- 建立TCP连接后发起HTTP请求(一个完整的HTTP请求报文);
- 一个HTTP请求有请求行(描述客户端请求方式,POST/GET等)、请求头部、空行和请求数据组成
- 服务器响应HTTP请求,浏览器得到HTML代码;
- 浏览器解析HTML代码,并请求HTML代码中的资源(如js、css、图片等);
- 浏览器对页面进行渲染呈现给用户;
- 关闭TCP连接(四次握手)。
HTTP状态码
常见状态码:
- 404:服务器无法找到对应资源
- 403:请求的对应资源禁止被访问
- 503:服务器正忙
HTTP协议中的请求方式
- GET:用于请求访问已经被URI(统一资源标识符)识别的资源,可以通过URL传参给服务器。
- POST:用于传输信息给服务器,主要功能与GET方法类似,但一般推荐使用POST方式。
- 还有PUT、DELETE、TRACE等等。
GET与POST方法的区别
功能上:GET一般用来从服务器上获取资源,POST一般用来更新服务器上的资源。
安全性:GET是不安全的,因为GET请求提交的数据将明文出现在URL上,可能会泄露私密信息;POST请求参数则被包装到请求体中,相对更安全。
数据量:GET传输的数据量小,因为受URL长度限制,但是效率较高;POST可以传输大量数据,所以上传时只能用POST方式。
Session与Cookie的对比:
Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。
cookie:
一个用户的所有请求操作都应该属于同一个会话,Web应用程序是使用HTTP协议传输数据的,而HTTP协议又是无状态(一旦数据交换完毕,客户端与服务器连接关闭,再次交换数据需要建立新的连接,这就意味着服务器无法从连接上追踪会话)**的。所以为了解决这个问题,引入了Cookie,给客户端颁发一个通行证,这样服务器就能从通行证上确认用户身份了,在Session出现之前都是用的Cookie来跟踪会话。
客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来,当再次请求该网站时,浏览器会把请求的网址连同该Cookie一同提交给服务器,服务器检查Cookie,以此辨认用户状态。
session:
Session是服务器端使用的一种记录客户端状态的机制,使用上比cookie简单一些,相应的也增加了服务器的存储压力。
如果说Cookie机制是通过检查客户身上的“通行证”来确认客户身份的话,那么Session机制就是通过检查服务器上的“客户明细表”来确认客户身份。Session相当于程序在服务器上建立一份客户档案,客户来访的时候只需要查询客户档案表就可以了。
- 安全性:cookie数据存放在客户端上,安全性较差;session数据放在服务器上,安全性更高;
- 大小限制:cookie由大小限制,单个cookie保存的数据不能超过4K,seesion无此限制,理论上只与服务器的内存大小有关;
- 服务器资源消耗:session是保存在服务器端上会存在一段时间才会消失,当访问增多,对服务器性能有影响;
- 实现机制:session的实现常常依赖于cookie机制,通过Cookie机制回转sessionid。
子网掩码
用于指明一个IP地址哪些位标识的是主机所在的子网,以及哪些位表示的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。
子网掩码是一个32位地址,用于屏蔽地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网还是广域网上。
将计算机十进制的IP地址和子网掩码转换为二进制的形式,然后进行逻辑与运算,如果得出的结果相同说明两台计算机就属于同一网段。
192.168.10.11 AND 255.255.255.0,结果为192.168.10.0
结果表明:该IP地址属于192.168.10.0这个网段,主机号是11
TCP/IP协议
TCP/IP协议是Internet最基本的协议,由网络层的TCP协议和传输层的IP协议组成,通俗的说:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是因特网的每一台联机设备规定的一个地址。
标签:协议,主机,知识,TCP,计算机网络,地址,IP地址,整理,服务器 From: https://www.cnblogs.com/ZhengLijie/p/17412957.html