计算机网络体系结构
OSI,TCP/IP,及五层协议的体系结构。
OSI七层体系是规范,但是实际使用中并未区分得那么清楚,常采用的是TCP/IP四层体系。将OSI与TCP/IP综合便是五层协议体系结构。
每一层的作用及协议如下:(粗体重点掌握)
- 应用层:为用户提供服务,允许访问OSI环境的手段。
常见协议:FTP(文件传输协议)、DNS(域名系统)、Telnet(远程登录协议),SMTP(简单邮件传输协议),HTTP(超文本传输协议),SSH(安全外壳协议),DHCP(动态主机配置协议)。 - 表示层:为数据表示加密压缩。
常见协议:JPEG,MPEG,ASII - 会话层:确定数据是否需要进行网络传递。
常见协议:NFS,SQL,RPC,NETBIOS. - 运输层:对报文进行分组、传输协议、端口封装、差错校验。
常见协议:TCP(传输控制协议),UDP(用户数据报文协议),SPX。 - 网络层:IP地址编辑、路由选择。
常见协议:IP(网际协议),ARP(地址转换协议)——在TCP/IP协议体系中将其划分在了网络层,RARP(反向地址转换协议),OSPF,IPX,RIP,IGRP,,ICMP.
硬件:路由器。 - 数据链路层:MAC地址编译。
常见协议:ARQ(自动重传请求协议),PPP(点对点协议),VLAN,MAC,,FR,HDLC。
硬件有:网桥、交换机。 - 物理层:数据实际传输、电气特性定义。
常见协议:IEEE802.3,CLOCK,RJ45.
硬件有中继器、集线器、网线。
一:应用层
重点掌握:HTTP(超文本传输协议),DNS(域名系统)
1. HTTP(超文本传输协议)
HTTP协议定义了浏览器(即互联网客户进程)怎样向万维网文档,以及服务器怎样把文档传送给浏览器。
- HTTP协议是构建于TCP/IP协议之上的,默认端口80。
- HTTP协议是无连接无状态的。
1.1 HTTP协议包括哪些请求
- GET:向特定的资源发出请求
- POST:向指定资源提交数据进行处理.
- PUT:向指定资源位置上传最新内容
- DELETE:请求服务器删除指定资源
- HEAD:向服务器索要与GET请求一致的响应,只不过响应体不会被返回。
- OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法。
- TRACE:回显服务器收到的情趣,用于测试或诊断
- CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
1.2 HTTP中get及post的区别
- 功能上来说,get用于向服务器请求资源,post用于向服务器提交数据更新资源。
- 从REST服务上来说,get是幂等的,读取同一个资源得到的都是相同数据,而post会进行更新。
- 从请求参数看get的参数附加在url后,以?分割,参数以&符号相连,参数中有空格则转换为+,参数中有中文或其他字符会将字符串进行base64加密;而post请求是将提交的数据放在http的请求报文的请求体中。
- 安全性,get提交的数据会明文出现在url上,post是包装在请求体中相对安全。
- 大小限制。get请求的长度受限于浏览器或服务器对url大小的限制。而post请求理论上没有大小限制。
1.3 常见的HTTP状态码
- 1xx:指示信息---接收的请求正在处理
- 2xx:成功---表示请求正常处理完毕
200 ok 客户端请求成功 - 3xx:重定向---要完成请求必须进一步处理(需要进行附加操作以完成请求)
301 Moved Permanently :永久性重定向;
302 Found :临时性重定向; - 4xx:客户段错误---请求错误或请求无法实现
400 Bad Request //客户端请求有语法错误
401 Unauthorized //请求未经授权
403 Forbidden //服务器收到请求,但是拒绝提供服务
404 Not Found //请求资源不存在,eg:输入了错误的URL - 5xx:服务错误---服务器无法未能实现合法的请求
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable //服务器当前不能处理客户端的请求
2. HTTPS(超文本传输安全协议)
超文本传输安全协议:是一种通过计算机网络进行安全通信的传输协议。HTTPS经由HTTP进行通信,但利用SSL/TLS来加密数据包。
HTTPS开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。
- 端口不同:http是80端口,HTTPS是默认443端口
- 资源消耗:HTTPS通信因为多了加密解密操作需要消耗更多的cpu及内存资源
- 开销:HTTPS的证书是要钱购买的。
- 加密:HTTPS的加密是采用了共享秘钥加密和公开秘钥加密的混合加密机制。
2.1 HTTP与HTTPS的区别
Http协议运行在TCP之上,明文传输,客户端与服务器端都无法验证对方的身份.
Https是身披SSL外壳的Http,运行于SSL()上,SSL运行于TCP之上,是添加了加密和认证机制的HTTP。
3. DNS(域名系统服务协议)
DNS是一中用于TCP/IP应用程序的分布式数据库,它提供域名到IP地址的转换。
3.1 域名系统的解析过程
- 在浏览器中找,看浏览器是否缓存了该域名的IP地址。
- 没有再在本机的hosts文件中找,看本机是否缓存了域名的ip地址。(这两步在本机找,图中未体现)
- 没有再去本地域名服务器找,发起域名解析请求。
- 没有的话,本地域名服务器像根域名服务器发起解析请求。
- 根域名返回该域名所在的顶级域名服务器地址。
- 本地域名服务器去请求顶级域名服务解析。
- 顶级域名服务器返回该域名的权限域名服务器地址。
- 本地域名服务器向权限域名服务器请求解析。
- 权限域名服务器找到请求的域名对应的ip并返回给本地域名服务器,本地域名服务器将该ip加入缓存,并返回给客户端。
4. 常见端口及对应的服务
FTP(21)、SSH(22)、Telnet(23)、SMTP(25)、HTTP(80)、HTTPS(443)、MySql(3306)、Oracle(1521)。
5. 浏览器输入网址会发生什么
- DNS 解析:浏览器查询 DNS,获取域名对应的 IP 地址;
- TCP 连接:浏览器获得域名对应的 IP 地址以后,浏览器向服务器请求建立链接,发起三次握手;
- 发送 HTTP 请求:TCP 连接建立起来后,浏览器向服务器发送 HTTP 请求;
- 服务器处理请求并返回 HTTP 报文:服务器接收到这个请求,并根据路径参数映射到特定的请求处理器进行处理,并将处理结果及相应的视图返回给浏览器;
- 关闭tcp连接。
- 浏览器解析渲染页面:浏览器解析并渲染视图,若遇到对 js 文件、css 文件及图片等静态资源的引用,则重复上述步骤并向服务器请求这些资源;浏览器根据其请求到的资源、数据渲染页面,最终向用户呈现一个完整的页面。
- 连接结束。
二:运输层
重点掌握:TCP(传输控制协议),UDP(用户数据报文协议)
1. TCP(传输控制协议)
TCP(传输控制协议)是一种面向连接的、可靠的、点对点的、基于字节流的、全双工通信的传输层通信协议。
面向连接意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个TCP连接。在一个TCP连接中,仅有两方进行彼此通信;
全双工通信:TCP 允许通信双方的应用进程在任何时候都能发送数据。
TCP 传送的数据单位协议是 TCP 报文段(segment)
tcp通信连接的二个端点叫做套接字(socket) 套接字(sokect)=(IP地址:端口号)
TCP报文段格式如下:
1.1 TCP协议如何保证传输的可靠性
- 数据包校验:目的是检测数据在传输过程中的任何变化,若校验出包有错,则丢弃报文段并且不给出响应,这时TCP发送数据端超时后会重发数据;
- 失序数据包重排序:TCP报文段是存放在IP数据报的数据部分,而IP数据报在到达服务端的网络层可能会失序,那么在服务端的传输层的TCP报文段也会失序,此时TCP传输层对TCP报文段重排序再交给应用层。
- 丢弃重复数据:对于重复数据能够丢弃
- 应答机制:当TCP收到发自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒。
- 超时重发:当TCP发出一个报文段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段;
- 流量控制:TCP连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据,这可以防止较快主机致使较慢主机的缓冲区溢出,这就是流量控制。TCP使用的流量控制协议是可变大小的滑动窗口协议 客户端(超时重发)——服务端(增、删、改、答);客户端+服务端:流量控制。便于记忆
1.2 TCP的滑动窗口
TCP 利用滑动窗口实现流量控制的机制。发送方和接收方各有一个窗口,接收方通过 TCP 报文段中的窗口字段告诉发送方自己的窗口大小,发送方根据这个值和其它信息设置自己的窗口大小 。
发送窗口内的字节都允许被发送,接收窗口内的字节都允许被接收。
如果发送窗口左部的字节已经发送并且收到了确认,那么就将发送窗口向右滑动一定距离,直到左部第一个字节不是已发送并且已确认的状态;接收窗口的滑动类似,接收窗口左部字节已经发送确认并交付主机,就向右滑动接收窗口。
TCP 利用滑动窗口实现流量控制。流量控制是为了控制发送方发送速率,保证接收方来得及接收。接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送方的发送速率。将窗口字段设置为 0,则发送方不能发送数据。
1.3 TCP的拥塞控制
没有理解到
1.4 TCP的三次握手
- 最初两端的TCP进程都处于CLOSE(关闭)状态。上图中A主动打开连接,B被动打开连接,B打开连接后处于LISTEN(监听状态),等待客户的连接请求。。
- A 向 B 发出连接请求报文段,,此时A进入SYN-SENT(同步已发送)状态。
- B 收到连接请求报文段后,如同意,则发回确认,此时B也进入SYN-SENT(同步已发送)状态。
- A 收到此报文段后向 B 给出确认,A进入ESTABLISHED(已建立连接)状态,tcp连接已经建立。B收到A的确认后也进入ESTABLISHED状态。
1.5 TCP的四次挥手
- 当客户端进程没有数据要发送时,客户端进程停止发送数据并主动通知TCP释放连接,客户端主动发送释放连接报文请求,并进入finsh_wait-1状态;
- 服务端收到释放报文请求后,会向客户端发送一个确定释放报文请求,并主动通知应用进程客户端没有数据发送了,此时服务端进入close_wait状态。客户端收到服务端的确认信息后,进入finish_wait_2状态。此时TCP连接处于半关闭状态,从A->B的TCP连接关闭。
- 当服务端也没有数据发送时,服务端进程会通知TCP连接被动关闭,服务端发送连接释放报文段,此时服务端进入last_ack最后确认阶段。
- 当客户端收到服务端连接释放报文后,会发送确认信息,客户端进入time_wait状态。服务端收到这个确认信息后则关闭服务端的连接,进入closed状态,撤销传输控制块。而客户端在time_wait状态等待2MSL(2倍最大报文存活时间)后,也关闭连接进入closed状态,再撤销传输控制块。
1.6 TCP四次挥手原因
多了第三步,服务端注主动发起释放连接报文信息。因为从客户端到服务端的数据已经发送完了,但是服务端的数据仍有可能还没有发送完。
1.7 TCP建立连接为什么是三次而关闭是四次呢
因为服务端的LISTEN状态下的SOCKET当收到SYN报文的连接请求后,它可以把ACK和SYN(ACK起应答作用,而SYN起同步作用)放在一个报文里来发送。而断开连接时服务端的数据不一定全部发送完成,所以多了一个全部发送完成后同意释放连接的请求。
1.8 TCP为什么等待2MSL
- 为了保证最后一次挥手,客服端发送给服务端的确认信息,服务端能够收到。比如最后一次的确认报文段丢失,服务端一直收不到确认信息,就会启动第三次挥手进行超时重传。而客户端又因为处于2MSL,就可以继续发送ACK确认报文信息。
- 防止已失效的连接请求报文段出现在本连接中。A 在发送完最后一个 ACK 报文段后,再经过时间 2MSL,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失。这样就可以使下一个连接中不会出现这种旧的连接请求报文段。
2. UDP(用户数据报文协议)
用户数据报文协议:是一个简单的面向数据报的传输层协议。
在TCP/IP模型中,UDP为网络层以上和应用层以下提供了一个简单的接口。UDP只提供数据的不可靠传递,它一旦把应用程序发给网络层的数据发送出去,就不保留数据备份(所以UDP有时候也被认为是不可靠的数据报协议)。
3. TCP与UDP的区别
- TCP面向连接,传输数据之前要建立会话,UDP是无连接的。
- TCP提供可靠传输,保证数据不丢包,不重复的,有序的。而UDP只尽努力交互,不保证可靠交互。
- TCP面向字节流的,UDP面向报文的
- TCP只支持点到点通信;而UDP支持一对一,一对多,多对多的通信。
- TCP首部开销大20字节,UDP首部开销小8字节
4. TCP与UDP对应的的常见应用层协议
4.1 TCP
- FTP:定义了文件传输协议,使用21端口。
- Telnet:它是一种用于远程登陆的端口。
- SMTP:定义了简单邮件传送协议
- POP3:它是和SMTP对应,POP3用于接收邮件。
- HTTP:从Web服务器传输超文本到本地浏览器的传送协议。
4.2 UDP
- DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。
- SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。
- TFTP(Trival File Transfer Protocal):简单文件传输协议,该协议在熟知端口69上使用UDP服务。
三:网络层
重点掌握:IP(网际协议),ARP(地址转换协议)——在TCP/IP协议体系中将其划分在了网络层,RARP(反向地址转换协议)
1. IP(网际协议)
1.1 IP数据报格式
- 版本:有 4(IPv4)和 6(IPv6)两个值;
- 首部长度:占 4 位,因此最大值为 15。值为 1 表示的是 1 个 32 位字的长度,也就是 4 字节。因为首部固定长度为 20 字节,因此该值最小为 5。如果可选字段的长度不是 4 字节的整数倍,就用尾部的填充部分来填充。
- 总长度 : 包括首部长度和数据部分长度
- 生存时间 :TTL,它的存在是为了防止无法交付的数据报在互联网中不断兜圈子。以路由器跳数为单位,当 TTL 为 0 时就丢弃数据报。
- 协议 :指出携带的数据应该上交给哪个协议进行处理,例如 ICMP、TCP、UDP 等。
- 首部检验和 :因为数据报每经过一个路由器,都要重新计算检验和,因此检验和不包含数据部分可以减少计算的工作量
- 标识 : 在数据报长度过长从而发生分片的情况下,相同数据报的不同分片具有相同的标识符。
- 片偏移 : 和标识符一起,用于发生分片的情况。片偏移的单位为 8 字节
1.2 IP地址分类
IP地址格式为:网络地址+主机地址(四个字节——32位表示)
- A类地址:以0开头,一个字节(8位)表示网络地址,还剩7位,即换为十进制为2的7次方,即为1.0.0.0~126.255.255.255。主机地址可以表示的数为:255255255-2。
- B类地址:以10开头,用去二位还剩6位,即为2^7+2^6=192;表示为128.0.0.0~191.255.255.255。主机地址可以表示的数为:255255255-2。
- C类地址第1字节(最高位固定是110)、第2字节和第3个字节,另外1个字节为主机地址。即为2^7+2^6+2^5 = 224,表示为:192.0.0.0 - 223.255.255.255。C类网络最大主机数量256-2=254。
- D类地址不分网络地址和主机地址,它的第1个字节的最高位固定是1110。用去4位,即为2^7+2^6+2^5 +2 ^4= 239,表示为240.0.0.0 - 255.255.255.255。
- E类地址也不分网络地址和主机地址,它的第1个字节的最高位固定是1111。2^7+2^6+2^5 +2 ^4+2^4=255,表示为:240.0.0.0 - 255.255.255.255。
2. ARP(地址转换协议)
ARP地址转换协议实现由IP地址得到Mac地址。
2.1 ARP地址转换协议工作原理
2.1.1 对于同一个网段
2.1.2 对于不同网段
3. RARP(反向地址转换协议)
四:计算机网络安全
1. 对称加密
2. 非对称加密
3. 数字签名
来源:oschina
链接:https://my.oschina.net/PrivateO2/blog/3211407