03.浅谈Git的传输协议

写在前面的话

  1. 如果你是初学Git,意在掌握它的基本使用!那么建议你先阅读本章:本地协议模块
  2. 为什么把Git的协议篇放到前面来写呢?考虑到:
    • 不是每个人都有Github或Gitlab,如果一开始学就要认人去申请这些东西,然后配置秘钥,创建仓库,可能很多人就死在这个路上了;
    • 先了解Git的内部支持那些协议可以让你更好的学习后续遇到的问题.例如:学习本地协议之后,你完全可以忽略以上所有问题,自己模拟在本地搭建”托管服务”然后学习绝大部分你看到的关于Git的操作资料;

1. 本地协议

什么是本地协议?

  • 你的操作系统[Windows/Linux]就是基于这个东西来访问的;例如:你保存了一个网页到本地,然后打开你保存的网页,你会看到浏览器打开的时候URL地址栏那个地方就是:file:///home/xxxx/xxx.html,而file://就是本地协议的协议头,可以理解为一个标志:告诉浏览器或Git我使用的是本地协议,你到我本地的home/xxxx路径去找xxx.html文件
  • 如果什么协议头都没打,直接/开头,Git会默认使用本地协议去你本地找,所以你可以在本地模拟一个类似Github或者Gitlab的仓库托管服务,然后开启你学习Git之路[下一章会告诉大家怎么去搭建,如果你刚刚开始学习Git,你可以直接跳去下一章进行学习了]

优点

  • 简单
  • 直接使用现有文件权限和网络访问权限

缺点

  • 配置共享文件系统难
  • 不方便多位置访问
  • “远程磁盘”方式访问,配置不便,访问慢
  • 文件协议不保护仓库意外的损坏

2. “哑(dumb)”协议

  • 在Git 1.6.6版本之前只有哑协议可用,比较简单且通常是”只读模式”,而且是谁都可以读
  • “哑协议”的只读限制是因为其服务端没有一个Git的守护进程在持续的关注”客户端”的所需并与之关注,故而使用哑协议,”客户端”是不能向”服务端”传输数据的

由于现在基本很少使用这种协议了,具体我也没使用过这个,这里只是总结官网上的文章稍微加了自己的理解,了解一下!

3. 智能协议

  • 智能协议是Git在1.6.6版本中引入的,运行在标准的HTTP/S端口上,并提供各种HTTP验证机制,是目前最常用的传输方式。
  • 该协议在服务端运行了两组进程,分别负责上传[客户端的send-pack进程连接到服务端receive-pack进程]和下载数据[客户端的fetch-pack进程连接服务端upload-pack进程],它们可以读取本地数据,理解客户端有什么和需要什么,并为它生成合适的包文件.

优点

  • 效率比哑协议高
  • 提供使用各种的HTTP验证机制
  • 即支持 “git://” 协议一样设置匿名服务,也可以像SSH协议一样提供传输时授权和加密数据
  • 可用性强:①不同访问方式,只需一个URL及服务器只在需要授权时提示输入授权信息;②相比SSH协议,设置简单,免去设置公钥问题;③HTTP/S协议被广泛使用,一般的企业防火墙都会允许这些端口的数据通过;④可以在HTTPS协议上提供只读版本库的服务;甚至可以让客户端使用制定的SSL证书.

缺点

  • 架设HTTP/S协议的服务端比SSH协议难
  • 如果你在HTTP上使用需授权的推送,管理凭证会比使用SSH秘钥认证麻烦

4. SSH协议

SSH协议是一个需要验证授权【采用公私密钥】的、普遍、建设简单、使用简单的协议

使用SSH协议克隆项目

$ git clone ssh://user@server/project.git 
$ # scp方式
$ git clone user@server:project.git

优点

  • 建设SSH协议访问服务简单,而且大多数环境下已经支持SSH访问
  • SSH访问安全–所有传输数据都要经过授权和加密
  • SSH协议很高效,传输前会尽量的亚索数据[其他的协议也会]

缺点

  • 不能匿名访问:①.不利于项目开源;②.如果你要同事提供匿名只读访问和SSH协议,那么需要搭建SSH服务和架设一个可以让他人访问的服务

生成SSH公钥

$ ssh-keygen -t 加密方式[rsa|dsa] -C "youremai@email.com"

推荐阅读:https://help.github.com/articles/connecting-to-github-with-ssh/

5. git协议

包含在Git里的一个特殊的守护进程,监听9418端口,但是访问无需任何授权,没有任何安全措施【要么所有人都可以访问,要么谁也不能访问,而且只要有人知道项目URL都可以向项目推送数据】

优点

  • Git协议是Git使用的网络传输协议中最快的

缺点

  • 缺乏授权机制
  • 架设繁杂困难;监听端口为非标准端口,一般企业防火前不会开放

参考文献:

转载请声明出处: MinsonLee的博客:https://minsonlee.github.io

扫描下方二维码,关注公众号,接收更多实时内容

新猿呓码

打赏一个呗

取消

感谢客官打赏,您的打赏使我动力十足!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦