Git 使用笔记

这是我在Coursera上的学习笔记。课程名称为《Computer Networks》,出自University of Washington。

由于计算机网络才诞生不久,目前正在以高速在发展,所以有些旧的教材可能都已经跟不上时代了。这门课程在2013年左右录制,知识相对还是比较新的。覆盖了计算机网络中的各个协议层,从物理层到应用层都讲得非常仔细。学完这门课程之后对计算机网络会有比较深刻的了解。

本章讲述了这门课程的大致情况,讲述了协议、协议层等基本概念。

  • 目标和动机

    • 课程的主要目标就是介绍计算机网络中的通信过程
    • 要点
      • 互联网如何工作

        • 浏览网页的时候发生什么
        • 什么是VPN HTTP TCP/IP DNS等
      • 计算机网络基础
        • 计算机网络必须解决的问题
        • 哪种设计思路是最有价值的
    • 为什么要学习计算机网络
      • 因为好奇
      • 因为互联网改变世界
      • 因为工作前景好
    • 为什么要学习计算机网络基础
      • 因为所有的网络工作原理是一样的
      • 因为益智
        • 比如解决可靠性问题,用编码检查错误、绕过错误的路由
        • 可靠性 安全性 网络增长 资源分配
      • change / reinvention
        • 互联网一直在变
        • 如今的互联网和以前的互联网是不一样的
        • CDN P2P VoIP IPv6 Mobile
    • 以下不是本课程的目标
      • 学习IT职业技能

        • 配置路由器
  • 网络的应用
    • 生活中的应用举例

      • 工作、家庭、移动设备
      • 用户通信
        • 代替电话:VOIP、视频会议、即时通信、社交网络
        • 远程通信:实时交互
      • 资源共享
        • 大量用户使用相同的资源:3D打印 搜索机器 云端设备
        • 让每个用户更加高效:statistical multiplexing
      • statictical multiplexing
        • 多个用户共享宽带
        • 因为不是每个用户都同时占满宽带
        • 举例:1个100M的宽带分配给5M的用户,每个用户使用网络的概率是50%,能分配多少用户?这个很简单啊,100M/5M=20个用户。实际上20个用户并不是每时每刻都在同时使用,所以实际上能分配的用户超过20个。最后根据二项分布原理,得出能分配30个用户
        • 名词:statistical multiplexing gain。上一题中,该值等于30/20 = 1.5X
    • 内容分发
      • 相同的内容要分发多次
      • 使用replica可以使网络更加高效
      • Replica(镜像服务器)
        • 主服务器到每个用户需要经过3跳,那么4个用户就要12跳。如果有一个replica,距离主服务器2跳,距离每个用户都是1跳,那么总共的跳数就是2+4*1=6跳,节约了6跳
    • 用于计算机之间通信
      • 电子商务、预订
      • 自动化处理信息
    • 将计算机连接到显示世界
      • webcam gps 门锁
      • 这是即将发展的物联网
    • 互联的价值
      • Metcalfe定律 1980

        • N个节点的网络,其价值为N的平方
        • 网络越大,价值越高
  • 网络组件
    • 网络有哪些部分

      • 应用 节点 连接

        • 应用+节点=主机
        • 连接+节点=路由器
    • 部件名称
      • 应用、用户:Skype iTunes Amazon
      • 主机、终端:笔记本 手机 PC
      • 路由器、交换机、HUB、中间系统:AP 电缆 DSL调制解调器
      • 连接、通道:有线、无线
    • 连接的种类
      • 全双工:双向同时通信
      • 半双工:双向非同时通信
      • 单工:单向通信
    • 无线通信
      • 所有的消息都是广播的,一端发送,所有端都能接收到
      • 无线的连接会相互干扰
    • 网络举例
      • Wifi(802.11)、企业网/以太网、ISP、电缆/DSL、移动/电话、蓝牙、电话、卫星
    • 按规模分类
      • 个人网PAN:蓝牙
      • 局域网LAN:WIfi、以太网
      • 城域网MAN:线缆、DSL
      • 广域网WAN:大的ISP
      • 互联网Internet
    • 互联网
      • 互联网就是将各种规模的网络链接成一个整体
    • 网络边界
      • 网络 = 主机 + 路由器 + 连接
      • ISP = 路由器 + 连接
    • 关键边界
      • Socket:应用和主机的边界
      • Traceroute:主机和主机的边界
  • Socket
    • 网络应用接口

      • 定义了应用如何使用网络,让应用之间能够通过主机进行通信
    • 应用之间的通信过程
      • 客户端
    • SocketAPI
      • 简化互联网通信
      • 支持两种网络服务
        • Stream流式
        • Datagram数据报
      • 允许应用附加到不同的端口
    • 接口列表
      • SOCKET BIND LISTEN ACCEPT CONNECT SEND RECEIVE CLOSE
    • Socket编程通常的程序
      • 客户端连接服务器
      • 客户端向服务器发送请求
      • 服务器返回数据
      • 断开链接
    • Socket程序接口调用情况
      • 客户端SOCKET,服务端SOCKET
      • 服务端BIND    LISTEN    ACCEPT*
      • 客户端CONNECT*    SEND
      • 服务端RECEIVE*    SEND
      • 客户端RECEIVE*    CLOSE
      • 服务端CLOSE
      • *星号表示阻塞操作
    • 客户端程序示例
      • socket()
      • getaddrinfo()
      • connect()
      • ...
      • send()
      • recv()
      • ...
      • close()
    • 服务端程序示例
      • socket()
      • getaddrinfo()
      • bind()
      • listen()
      • loop{  accept()
      • ...
      • recv()
      • ...
      • send()   }
      • close()
  • Traceroute 路由跟踪
    • 网络服务API隐藏了网络传输的细节
    • Traceroute
      • 这是广泛使用的命令行工具,unix中是traceroute,windows是tracert
      • 它的作用是探测网络信息传播的路径
  • 协议和分层
    • 计算机网络需要模块化

      • 计算机网络实现了很多功能,为了减少复杂度,引入了模块的概念
    • 协议和层
      • 协议和层是计算机网络中的主要结构。协议是水平的,而层是垂直的。只有同类的协议才能进行通信,每种协议只能使用下一层的协议进行通信。
      • 协议栈:1层~N层叠加是一个协议栈
        • 举例:用无线设备浏览网页,协议栈是HTTP TCP IP 802.11
    • 封装
      • 底层的协议将高层的协议进行封装,并加上自己的特殊信息
      • 就像写信一样,邮局无法看到邮件中的内容
      • 协议的封装就像洋葱,一层一层地封装
      • 封装的时候可能出现加密、压缩、分段、重组等
    • demultiplexing 拆封
      • 底层协议为什么知道高层协议是什么呢?因为底层协议中包含了高层协议的种类信息。比如ethertype value、IP protocol field、TCP port number
    • 分层的好处
    • 隐藏信息,使重用性更高
    • 隐藏信息,使得无线设备能和有线设备进行透明通信。HTTP - TCP - IP - 802.11 - IP - Ethernet - IP - TCP - HTTP
  • 分层的坏处
    • 封装过多使消息太长
    • 隐藏信息,有些应用可能需要知道是无线还是有线
  • 参考模型

    • 一点小建议

      • 每层协议需要实现哪些功能呢?这里有一些可以参考的协议模型。
    • OSI 7层协议模型
      • 应用层:提供用户所需要的功能
      • 表示层:转换不同的表示方法
      • 会话层:提供任务对话
      • 传输层:提供端对端的对话
      • 网络层:将信息封装成包
      • 数据链路层:将信息封装成帧
      • 物理层:发送比特信息
    • 互联网参考协议
    • 应用层:7层 HTTP DNS BGP RTP SMTP
    • 传输层:4层 TCP UDP
    • 网络层:3层 IP
    • 链路层:1 2 层 802.11 3G Ethernet Cable DSL
    • 层上表可以看出,IP协议是核心
  • 标准机构
    • ITU:G.992  H.264 MPEG4  ADSL
    • IEEE:802.3  802.11
    • IETF:RFC2616 HTTP/1.1 RFC1034/1035 DNS
    • W3C:HTML5 CSS
  • 基于协议层的名词
    • 传输单位

      • 应用层:消息
      • 传输层:分段
      • 网络层:包
      • 链路层:帧
      • 物理层:比特
    • 设备
      • 物理层:中继器,HUB
      • 交换机、网桥:链路层
      • 网络层:路由器
      • 应用层:代理、网关
      • 所有的设备看起来都差不多
  • 层的注意事项
    • 一个层中可能有多个协议一起工作
    • 有时候很难说清某一层到底是什么协议
  • 互联网历史

    • 大概的互联网时间线

      • ARPANET:1969 10^3
      • NSFNET:1982 10^6
      • 现代网络:2005 10^9
    • ARPANET 起点
      • 目的是分享资源
      • 第一个网络只有4个节点
      • 第一个杀手级应用就是电子邮件
      • 影响
        • 分组交换(packet switching)
        • 去中心化的控制
    • NSFNET 成长
      • 支持教育网
      • 经典的互联网协议出现了:TCP/IP   DNS   BGP   SOCKET
    • 现代互联网 WEB诞生
      • ISP  IXP
      • Web大发展,CDN  ICANN,大部分流量是视频,内容开始主导互联网

推荐教材:计算机网络第五版

Git 使用笔记,布布扣,bubuko.com

时间: 2024-11-03 05:41:26

Git 使用笔记的相关文章

Git 学习笔记

Git 学习笔记 本文整理参考廖雪峰的 Git 教程, 整理 Git 学习笔记, 用于 Git 常用命令速查:常用命令用彩色标注! Git学习笔记 $ git config --global user.name "Your Name" 配置本机所有仓库的用户名 $ git config --global user.email "[email protected]" 配置本机所有仓库的Email地址 $ git init 初始化一个Git仓库 $ ls -ah 查看隐

【Git 使用笔记】第二部分:基本命令 和 单分支开发

git 基本命令 git add . git commit -am "请填写你NB的备注" git fetch --all git push origin master:master git remote add origin 仓库地址 git remote rm origin git remote -v git rebase origin/master git rebase --continue git rebase --skip git rebase --abort ###举例仓库

Git -> git log笔记

显示提交关系图 git log --graph --oneline 显示最近的几条日志 git log -3 --pretty=oneline 显示每次提交的具体改动 git log -p -1 显示每次提交的变更概要 git log --state --oneline 定制输出 git log --pretty=raw -1 git log --pretty=fuller -1 git log --pretty=oneline -1Git -> git log笔记,布布扣,bubuko.com

【Git 使用笔记】第一部分:安装git 和 使用git

第一部分:安装git(本人使用ubuntu系统) sudo apt-get install git 第二部分:基本配置 git config core.filemode false//忽略文件属性的修改git config --global user.name "vincentguo"git config --global user.email "[email protected]" 第三部分:生成ssh key 放到 github 或者 其他git平台 ssh-k

Git学习笔记(二)

本次学习的是 版本回退 基本命令: 查看提交历史      git log 版本回退            git reset 查看每一次的命令 git reflog 具体步骤: 添加一句话到readme.txt中,并提交到Git库中. . readme.txt在Git中目前有三个版本: 按提交时间先后顺序排列如下: 第一个:wrote a readme.txt 第二个:add distrubuted 第三个:add difficulties 如果版本过多的话,根本记不住,只能查看使用命令git

Git 学习笔记<简介与安装> (一)

Git,开源中国以及GitHub所使用的系统, Is A 一个分布式版本控制系统 Be Used to 为团队合作写代码提供方便的管理系统.几乎满足你所有关于合作写代码的幻想. Has 本地端:工作区.版本库 (版本库还含有一个暂存区) 远程仓库:版本库(用来储存版本库的服务器) How To Install Linux: 首先,先输入git,看看是否安装Git: $ gitThe program 'git' is currently not installed. You can install

Git学习笔记总结和注意事项

一.Git简介 Git是目前世界上最先进的分布式版本控制系统,其特点简单来说就是:高端大气上档次! 二.Windows上Git安装 最早Git是在Linux上开发的,很长一段时间内,Git也只能在Linux和Unix系统上跑.不过,慢慢地有人把它移植到了Windows上.现在,Git可以在Linux.Unix.Mac和Windows这几大平台上正常运行了. msysgit是Windows版的Git,从http://msysgit.github.io/下载,然后按默认选项安装即可.安装完成后,在开

GIT -> git rev-parse 笔记

显示分支 $git rev-parse --symbolic --branches 显示里程碑 $git rev-parse --symbolic --tags 显示引用 $git rev-parse --symbolic --glob=refs/* refs/heads/master refs/remotes/origin/HEAD refs/remotes/origin/master 显示SHA1值 $git rev-parse HEAD $git rev-parse master refs

Git教程笔记

1Git基础说明 1.1Git与subversion的区别 Git只关注文件数据的整体内容是否发生改变,而不关心文件内容的具体差异 Git是分布式的版本控制系统,因此大多数的操作不需要网络环境 所有保存在Git数据库中的东西都是通过对内容的SHA-1计算的hash值作为索引而不是靠文件名 当把本地工作推送到服务器上时,Git必须服务器上的更新合并到本地后才能推送,而Subversion会在服务器端自动合并提交的更新 1.2Git文件状态变化表 对于任何文件,在Git内部只有三种状态:已提交(表示