应用层是为了解决某一类应用问题,而问题的解决又是通过位于不同主机中的多个应用进程之间的通信和协同工作来完成的。这些服务通常使用对应的协议,常见的几种服务协议有(HTTP,FTP/TFTP, TELENT)无论是哪种服务,都需要域名服务器(DNS)来解析ip地址才能通信以提供服务。

域名系统

DNS是域名系统(DomainNameSystem)的缩写,万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串可以简单地理解为将URL转换为IP地址

  • 域名是由圆点分开一串单词或缩写组成的,每一个域名都对应一个惟一的IP地址,在Internet上域名与IP地址之间是一一对应的
  • DNS就是进行域名解析的服务器。

DNS命名用于Internet等TCP/IP网络中,通过用户友好的名称查找计算机和服务。

域名结构

任何一个连接在因特网上的主机或者路由器,都是有一个唯一的层次结构的名字,即域名(domain name)。域可以分为顶级域、二级域、三级域等等。DNS规定:

  • 域名中的标号都是有英文字母和数字组成,每一个标号不超过63个字符(为了方便记忆最好不要超过12个字符)
  • 不区分大小写字母
  • 标号中除连字符(-)外不能使用其他的标点符号
  • 级别最低的域名写在最左边,而级别最高的顶级域名则写在最右边。由多个标号组成的完整域总共不超过255个字符。

各级域名的层级关系如下:

其中顶级域名服务器分为三大类:

  • 国家顶级域名nTLD。如cn,us,uk….
  • 通用顶级域名gTLD。如com,net,org……
  • 基础结构域名(infrastructure domain):这种域名只有一个,即arpa,用于反向域名解析,因此又称为反向域名。

域名只是个逻辑概念,并不代表计算机所在的物理地点。变长的域名和使用有助记忆的字符串,是为了便于人使用

域名服务器

一个域名服务器所负责管辖的(或有权限的)范围叫做区(zone)。各单位根据具体情况来划分自己管辖范围的区。但在一个区中的所有节点必须是能够连通的。每一个区设置相应的权限域名服务器(authoritative name server),用来保存该区中的所有主机的域名到IP地址的映射,以进行域名(domain name)和与之相对应的IP地址 (IP address)转换,解析域名

互联网上的DNS域名服务器也是按照层次安排的。每一个域名服务器都只对域名体系中的一部分进行管辖

域名解析过程

主机向本地域名服务器的查询采用递归,特点就是,询问者和答复者一层一层构成递归。本地域名服务器向根域名服务器的查询通常采用迭代,特点就是询问者不停的询问可能的答复者

当DNS客户机需要在程序中使用名称时,它会查询DNS服务器来解析该名称。客户机发送的每条查询信息包括三条信息:包括:指定的DNS域名,指定的查询类型,DNS域名的指定类别。基于UDP服务,端口53. 该应用一般不直接为用户使用,而是为其他应用服务,如HTTP,SMTP等在其中需要完成主机名到IP地址的转换。

WWW万维网

万维网并不等同计算机网络,万维网只是计算机网络所能提供的服务其中之一,是靠着计算机网络运行的一项应用。万维网以客户服务器方式工作。

  • 浏览器就是在用户主机上的万维网客户程序。
  • 万维网文档所驻留的主机则运行服务器程序,因此这台主机也称为万维网服务器。
  • 客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档

为了实现以上功能

  • 万维网使用统一资源定位符URL(uniform resource locator)来标志万维网上的各种文档,并使每一个文档在整个互联网的范围内具有唯一的标识符URL
  • 万维网客户程序与万维网服务器程序之间的交互遵守严格的协议,这就是超文本传送协议HTTP (HyperText Transfer Protocol)。HTTP是一个应用层协议,它使用TCP连接进行可靠的传送
  • 万维网使用超文本标记语言HTML (HyperText Markup Language),使得万维网页面的设计者可以很方便地用链接从本页面的某处链接到互联网上的任何一个万维网页面,并且能够在自己的主机屏幕上将这些页面显示出来

所以我们可以通俗的理解为万维网就是一个CS的模式,只不过客户端是浏览器而已。而其它客户端程序也有自己的协议和通信方式,只不过不用http而已。

统一资源定位符URL

URL 相当于一个文件名在网络范围的扩展,URL是与互联网相连的机器上的任何可访问对象的一个指针。由于访问不同对象所使用的协议不同,所以URL还指出读取某个对象时所使用的协议,URL的统一格式为:<协议>://<主机>:<端口>/<路径>

  • <协议>就是指出使用什么协议来获取该万维网文档。现在最常用的协议就是http(超文本传送协议HTTP )以及https(简单讲是HTTP的安全版),其次是ftp(文件传送协议FTP)
  • 在<协议>后面的://是规定的格式,: 也是固定格式。它的右边是第二部分<主机>,它指出这个万维网文档是在哪一台主机上。这里的<主机>就是指该主机在互联网上的域名
  • 再后面是第三和第四部分**<端口>和<路径>**,有时可省略

对应例如:http://localhost:8080/AIR/index.jsp端口和路径有时可以省略。HTTP的默认端口号是80,通常可省略。若再省略文件的<路径>项,则URL就指到互联网上的某个主页(home page)

超文本传送协议HTTP

HTTP 协议定义了浏览器(即万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。从层次的角度看,HTTP是面向事务的无状态的(transaction-oriented)应用层协议,它是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。请注意,HTTP不仅传送完成超文本跳转所必需的信息,而且也传送任何可从互联网上得到的信息,如文本、超文本、声音和图像等

这是一个逻辑上的通信过程,实际通信还依赖下三层(物理层,数据链路层,网络层):

  • HTTP使用了面向连接的TCP作为运输层协议,保证了数据的可靠传输。HTTP不必考虑数据在传输过程中被丢弃后又怎样被重传。但是,HTTP协议本身是无连接的。这就是说,虽然HTTP使用了TCP连接,但通信的双方在交换HTTP报文之前不需要先建立HTTP连接
  • HTTP协议是无状态的(stateless)。也就是说,同一个客户第二次访问同一个服务器上的页面时,服务器的响应与第一次被访问时的相同(假定现在服务器还没有把该页面更新),因为服务器并不记得曾经访问过的这个客户,也不记得为该客户曾经服务过多少次。HTTP的无状态特性简化了服务器的设计,使服务器更容易支持大量并发的HTTP请求

HTTP的无状态可以理解为幂等的

代理服务器

代理服务器(proxy server)是一种网络实体,它又称为万维网高速缓存(Web cache)。代理服务器把最近的一些请求和响应暂存在本地磁盘中。当新请求到达时,若代理服务器发现这个请求与暂时存放的请求相同,就返回暂存的响应,而不需要按URL的地址再次去互联网访问该资源。代理服务器可在客户端或服务器端工作,也可在中间系统上工作。

我们有时候需要清空浏览器缓存来刷新网络请求,也是因为我们现在用的浏览器也具有这个功能。如果服务器页面已更新,但是客户端请求到的页面没有改变,可能就需要清空一下缓存了

HTTP报文

由于HTTP 是面向文本的((text-oriented),因此在报文中的每一个字段都是一些ASCII码串,因而各个字段的长度都是不确定的:

HTTP请求报文和响应报文都是由三个部分组成的。可以看出,这两种报文格式的区别就是开始行不同。

  • 开始行,用于区分是请求报文还是响应报文。在请求报文中的开始行叫做请求行(Request-Line),而在响应报文中的开始行叫做状态行(Status-Line)。在开始行的三个字段之间都以空格分隔开,最后的“CR”和“LF”分别代表“回车”和“换行”。
  • 首部行,用来说明浏览器、服务器或报文主体的一些信息。首部可以有好几行,但也可以不使用。在每一个首部行中都有首部字段名和它的值,每一行在结束的地方都要有“回车”和“换行”。整个首部行结束时,还有一空行将首部行和后面的实体主体分开。
  • 实体主体(entity body),在请求报文中一般都不用这个字段,而在响应报文中也可能没有这个字段

下面分别介绍HTTP请求报文和响应报文的一些主要特点。

HTTP请求报文

请求报文的主要特点:请求报文的第一行“请求行”只有三个内容,即方法请求资源的URL,以及http的版本

  • 方法(method)是面向对象技术中使用的专门名词。所谓方法就是对所请求的对象进行的操作,这些方法实际上也就是一些命令
  • 中间部分为URL地址
  • 最后部分是http协议使用的版本,后续详细说明两个版本的区别

一个请求行的实例:GET http://www.xvz.edu.cn/dir/index.htm HTTP/1.1

HTTP响应报文

响应报文的主要特点:响应报文的第一行就是状态行。包含三个内容,http版本状态码以及解释状态码的简单短语状态码的含义

  • 1XX Informational(信息性状态码)
  • 2XX Success(成功状态码)。例如:200 OK 表示从客户端发来的请求在服务器端被正常处理了。
  • 3XX Redirection(重定向状态码) 例如:302,客户请求的文档转移到了一个新的地址,请求被重定向了。
  • 4XX Client Error(客户端错误状态码)。例如:404 Not Found 该状态码表明服务器上无法找到请求的资源。除此之外,也可以在服务器端拒绝请求且不想说明理由时使用。
  • 5XX Server Error(服务器错误状态码)。例如:500 Internal Server Error 该状态码表明服务器端在执行请求时发生了错误。

以上就是响应的一个例子

HTTP请求中各个概念的对比

包括HTTP和HTTPS的区别、HTTP1.0和HTTP1.1的区别、HTTP1.0和HTTP2.0的区别、POST 与 GET 的区别URI和URL的区别POST 与 GET 的区别,方便我们各种使用。

HTTP和HTTPS的区别

分别就端口、安全性和资源消耗来进行对比:

  • 端⼝ :HTTP的URL由“http://”起始且默认使⽤端⼝80,⽽HTTPS的URL由“https://”起始且默认使⽤端⼝443。
  • 安全性和资源消耗
    • HTTP协议运⾏在TCP之上,所有传输的内容都是明⽂,客户端和服务器端都⽆法验证对⽅的身份,HTTPS是运⾏在SSL/TLS之上的HTTP协议,SSL/TLS 运⾏在TCP之上。所有传输的内容都经过加密,加密采⽤对称加密,但对称加密的密钥⽤服务器⽅的证书进⾏了⾮对称加密。所以说,HTTP 安全性没有 HTTPS⾼,但是 HTTPS ⽐HTTP耗费更多服务器资源

简单介绍下对称加密和非对称加密:

  • 对称加密:密钥只有⼀个,加密解密为同⼀个密码,且加解密速度快,典型的对称加密算法有DES、AES等;
  • ⾮对称加密:密钥成对出现(且根据公钥⽆法推知私钥,根据私钥也⽆法推知公钥),加密解密使⽤不同密钥(公钥加密需要私钥解密,私钥加密需要公钥解密),相对对称加密速度较慢,典型的⾮对称加密算法有RSA、DSA等。

总结而言http有以下缺点:

  • 通信使用明文不加密,内容可能被窃听
  • 不验证通信方身份,可能遭到伪装
  • 无法验证报文完整性,可能被篡改

而https可以做到很好的安全性,虽然耗费的服务器资源会多一点,https的目标是保障传输的安全性

HTTP1.0和HTTP1.1的区别

HTTP1.0最早在⽹⻚中使⽤是在1996年,那个时候只是使⽤⼀些较为简单的⽹⻚上和⽹络请求上,⽽HTTP1.1则在1999年才开始⼴泛应⽤于现在的各⼤浏览器⽹络请求中,同时HTTP1.1也是当前使⽤最为⼴泛的HTTP协议。 主要区别主要体现在:

  1. ⻓连接 : 在HTTP/1.0中,默认使⽤的是短连接,也就是说每次请求都要重新建⽴⼀次连接
    HTTP 是基于TCP/IP协议的,每⼀次建⽴或者断开连接都需要三次握⼿四次挥⼿的开销,如果每次
    请求都要这样的话,开销会⽐较⼤。因此最好能维持⼀个⻓连接,可以⽤个⻓连接来发多个请
    求。HTTP 1.1起,默认使⽤⻓连接 ,默认开启Connection: keep-alive。 HTTP/1.1的持续连接
    有⾮流⽔线⽅式和流⽔线⽅式 。

    • 流⽔线⽅式是客户在收到HTTP的响应报⽂之前就能接着发送新的请求报⽂。
    • ⾮流⽔线⽅式是客户在收到前⼀个响应后才能发送下⼀个请求。
  2. 错误状态响应码 :在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源
    与资源的当前状态发⽣冲突;410(Gone)表示服务器上的某个资源被永久性的删除。
  3. 缓存处理 :在HTTP1.0中主要使⽤header⾥的If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1则引⼊了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match,If-None-Match等更多可供选择的缓存头来控制缓存策略。
  4. 带宽优化及⽹络连接的使⽤ :HTTP1.0中,存在⼀些浪费带宽的现象,例如客户端只是需要某个对象的⼀部分,⽽服务器却将整个对象送过来了,并且不⽀持断点续传功能,HTTP1.1则在请求头引⼊了range头域,它允许只请求资源的某个部分,即返回码是206(Partial Content),这样就⽅便了开发者⾃由的选择以便于充分利⽤带宽和连接

总体而言HTTP1.1完胜HTTP1.0.http1.1的目标是全面提升优化1.0

HTTP1.0和HTTP2.0的区别

HTTP1.0已经比HTTP1.1弱很多了,相比于HTTP2则更差:

  • 1.HTTP2使用的是二进制传送,HTTP1.X是文本(字符串)传送。
    大家都知道HTTP1.X使用的是明文的文本传送,而HTTP2使用的是二进制传送,二进制传送的单位是帧和流。帧组成了流,同时流还有流ID标示,通过流ID就牵扯出了第二个区别
    2.HTTP2支持多路复用因为有流ID,所以通过同一个http请求实现多个http请求传输变成了可能,可以通过流ID来标示究竟是哪个流从而定位到是哪个http请求
    3.HTTP2头部压缩HTTP2通过gzip和compress压缩头部然后再发送,同时客户端和服务器端同时维护一张头信息表,所有字段都记录在这张表中,这样后面每次传输只需要传输表里面的索引Id就行,通过索引ID就可以知道表头的值了
    4.HTTP2支持服务器推送HTTP2支持在客户端未经请求许可的情况下,主动向客户端推送内容

总而言之:http/2.0的目标是改善用户使用web时的速度体验

URI和URL的区别

URI的作⽤像身份证号⼀样,URL的作⽤更像家庭住址⼀样。

  • URI(Uniform Resource Identifier) 是统⼀资源标志符,可以唯⼀标识⼀个资源
  • URL(Uniform Resource Location) 是统⼀资源定位符,可以提供该资源的路径。它是⼀种具体的 URI,即 URL 可以⽤来标识⼀个资源,⽽且还指明了如何 locate 这个资源

URL是⼀种具体的URI,它不仅唯⼀标识资源,⽽且还提供了定位该资源的信息

POST 与 GET 的区别

Get是从服务器上获取数据,是安全的和幂等的,POST是修改服务器上的数据

  • 安全的 意味着该操作用于获取信息而非修改信息。换句话说,GET请求一般不应产生副作用。就是说,它仅仅是获取资源信息,就像数据库查询一样,不会修改,增加数据,不会影响资源的状态。
  • 幂等 的意味着对同一URL的多个请求应该返回同样的结果。

GET请求的数据会附在URL之后,POST把提交的数据则放置在是HTTP包的包体中。POST的安全性更高

  • GET方式提交的数据最多只能是2048字节,理论上POST没有限制,可传较大量的数据
  • GET支持缓存(取到的资源),POST不支持缓存

总的来说,Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求。

用户状态保存

HTTP 是⼀种不保存状态,即⽆状态(stateless)协议。也就是说 HTTP 协议⾃身不对请求和响应之间
的通信状态进⾏保存。那么我们保存⽤户状态呢?

Session和Cookie

先来了解两个概念,Session和Cookie,Cookie 和 Session都是⽤来跟踪浏览器⽤户身份的会话⽅式,但是两者的应⽤场景不太⼀样

  • Cookie ⼀般⽤来保存⽤户信息,通过这种方式不需要用户反复去输入用户信息去登录

    • 我们在 Cookie 中保存已经登录过得⽤户信息,下次访问⽹站的时候⻚⾯可以⾃动帮你登录的⼀些基本信息给填了;
    • ⼀般的⽹站都会有保持登录也就是说下次你再访问⽹站的时候就不需要重新登录了,这是因为⽤户登录的时候我们可以存放了⼀个 Token 在 Cookie中,下次登录的时候只需要根据 Token 值来查找⽤户即可(为了安全考虑,重新登录⼀般要将 Token重写);
    • 登录⼀次⽹站后访问⽹站其他⻚⾯不需要重新登录
  • Session 的主要作⽤就是通过服务端记录⽤户的状态。 典型的场景是购物⻋,当你要添加商品到购物⻋的时候,系统不知道是哪个⽤户操作的,因为 HTTP 协议是⽆状态的。服务端给特定的⽤户创建特定的 Session 之后就可以标识这个⽤户并且跟踪这个⽤户了。
  • Cookie 数据保存在客户端(浏览器端),Session 数据保存在服务器端。Cookie 存储在客户端中,⽽Session存储在服务器上,相对来说 Session 安全性更⾼。如果要在Cookie 中存储⼀些敏感信息,不要直接写⼊ Cookie 中,最好能将 Cookie 信息加密然后使⽤到的时候再去服务器端解密

可以通俗的这么理解,Cookie在客户端保存用户信息,知道用户干了什么事儿,Session则在服务端给用户创建了相应的数据存档,下次只要对应用户登录就能读档,那么要想找到用户正确的访问内容需要二位配合了。

用户状态保存机制

Session 和Cookie联手可以解决这个问题,Session 的主要作⽤就是通过服务端记录⽤户的状态。典型的场景是购物⻋,当你要添加商品到购物⻋的时候,系统不知道是哪个⽤户操作的,因为 HTTP 协议是⽆状态的。

  • 服务端给特定的⽤户创建特定的Session 之后就可以标识这个⽤户并且跟踪这个⽤户了
  • ⼀般情况下,服务器会在⼀定时间内保存这个Session,过了时间限制,就会销毁这个Session
  • 在服务端保存 Session 的⽅法很多,最常⽤的就是内存和数据库(⽐如是使⽤内存数据库redis保存)。

既然 Session 存放在服务器端,那么我们如何实现 Session 跟踪呢?⼤部分情况下,我们都是通过在Cookie 中附加⼀个 Session ID 来⽅式来跟踪,这样用户登录并且携带sessionid,在访问对应网站时去redis里找对应的session信息,就拿到了购物车里的物品,也就是知道了买了什么东西。

其它常用服务和协议

简单介绍下其他的一些协议:FTP、SMTP、POP3以及TELNET这几种基于TCP的协议

SMTP及POP3

个电子邮件系统有三个主要组成构件:用户代理邮件服务器,以及邮件协议(包括邮件发送协议,如SMTP,邮件读取协议,如POP3)。用户代理和邮件服务器都要运行这两种协议。

FTP

件传送协议FTP(file transfer protocol)是英特网上使用得最广泛的文件传送协议。 网络文件系统NFS,允许应用进程打开一个远地文件,并能在该文件的某一个特定的位置上开始读写数据。,它使用TCP来确保文件传输的可靠性

远程终端协议TELNET

TELNET又称为终端仿真协议。它定义了数据和命令应怎样通过因特网,这些定义就是所谓的网络虚拟终端NVT(network virtual terminal)。所有的通信都是用8位一个字节,在运转时,NVT使用7位ASCⅡ码传送数据,而当高位置1时用作控制命令。

【计算机网络基础 六】应用层相关推荐

  1. 计算机网络基础之应用层

    温故: 网络层在OSI七层中为位于第三层,同时也是通信子网的最高层,物理层传输的单位是比特流,数据链路层传输的是数据帧,而网络层的传输单位是数据包,传输层的传输单位是报文.这里还要做一个比较,物理层要 ...

  2. 计算机网络基础知识 - 应用层

                                                  第六章 应用层 1. 对等模式与C/S模式的区别 客户机/服务器网模式(C/S模式):在客户机/服务器网络中 ...

  3. 计算机网络基础知识--应用层协议HTTP、FTP、SMTP

    目录 1. HTTP 协议 HTTP 特点 HTTP 与HTTPS 的区别 HTTP 请求报文 HTTP 响应报文 2. FTP 协议 与TFTP 协议 FTP 协议 TFTP 协议 3. SMTP ...

  4. 计算机网络基础之表示层的功能和服务

    温故: 网络层在OSI七层中为位于第三层,同时也是通信子网的最高层,物理层传输的单位是比特流,数据链路层传输的是数据帧,而网络层的传输单位是数据包,传输层的传输单位是报文.这里还要做一个比较,物理层要 ...

  5. 计算机网络基础之OSI网络分层大总结

    温故: 网络层在OSI七层中位于第三层,同时也是通信子网的最高层,物理层传输的单位是比特流,数据链路层传输的是数据帧,而网络层的传输单位是数据包,传输层的传输单位是报文.这里还要做一个比较,物理层要解 ...

  6. 计算机网络第六弹——应用层

    计算机网络第六弹--应用层 彩蛋 计算机网络谢希仁第七版原版ppt获取方式:公众号后台回复"N3"即可获取. 由于公众号不支持显示LaTeX公式且公众号排版混乱,建议大家关注微信公 ...

  7. 计算机网络按信号频带占用方式,[大学计算机应用基础第六章计算机网络基础.ppt...

    [大学计算机应用基础第六章计算机网络基础 第六章 计算机网络基础 中国金桥信息网(CHINAGBN )由原电子工业部归口管理,它是一个把国务院.各部委专用网络与各省市自治区.大中型企业以及国家重点工程 ...

  8. 计算机网络知识点整理---应用层(六)

    本文章是根据B站的王道计算机考研-计算机网络进行整理 *建议使用电脑观看 计算机网络知识点整理-概述(一) 计算机网络知识点整理-物理层(二) 计算机网络知识点整理-数据链路层 (上)(三) 计算机网 ...

  9. 计算机网络基础——应用层

    文章目录 应用层协议原理 进程通信 应用层协议之HTTP 持久连接与非持久连接 HTTP报文格式 HTTP缓存 应用层协议之FTP 应用层协议之SMTP 应用层协议之DNS 应用层协议原理 进程通信 ...

最新文章

  1. Pandas 基础 (1)—— Series
  2. 70个NumPy分级练习:用Python一举搞定机器学习矩阵运算
  3. python 文章词数统计
  4. 【数据结构与算法】共享栈的Java实现
  5. Sun公司发布最新版本的JDK 6 update 11
  6. 标配65W闪充!865旗舰充电3分钟“满血复活”
  7. feign调用service_微服务之间的调用(Ribbon与Feign)
  8. “朝阳群众”APP上线!解读怎么做一款深入群众的应用
  9. gpio stm8 管脚 配置工具_STM8S 外设模块的GPIO引脚应该如何配置
  10. 从键盘录入10个整数,统计有多少个奇数,Java基础轻松实现
  11. 分贝噪音测试软件文件存储,分贝噪音测试工具
  12. 中南OJ 2012年8月月赛 I题 Imagination
  13. CentOS7-命令-查看操作历史记录(history)
  14. 周期函数的自身叠加后功率函数思考
  15. python_day10のPython操作 RabbitMQ、Redis、Memcache
  16. ADS-WK11-Review of Programming Contest Rules-回溯剪枝
  17. 互联网创业人士具备的5大素质
  18. ssms不显示服务器名称,SSMS Sql Server 身份验证(设置用户名和密码)方式登陆
  19. Spark基础【介绍、入门WordCount案例】
  20. 国内航班最快明年可实现上网打电话-航班-打电话-上网

热门文章

  1. centos7使用说明
  2. 原Borland Delphi研发部程序员Joe C. Hecht讲述自己离开Borland公司作为个体户程序员独立单干接活谋生的故事
  3. 用Silverlight制作图片公告栏
  4. 消息队列之kafka面试题
  5. 【python第三方库安装教程】
  6. 今天小暑是什么时间_2021小暑节气时间,2021年小暑是什么时候
  7. 《东北往事——黑道风云20年》
  8. [翻译]利用顶点位移的VR畸变校正
  9. 【SmartSvn】Switch trunk和branch
  10. macOS是不是计算机系统,苹果笔记本的MAC和OSX系统 有什么不同。还是二种系统是一样的。现在和的苹果笔记本电脑何种系统。...