计算机网络基础回顾

对于程序员来说,计算机网络的知识是很重要也很基础的。尤其是做web开发就要对http或者https很熟。有的时候涉及到域名,还会碰到跨域问题。这些其实都是计算机网络相关的知识,本篇就主要回顾下计算机网络中的重要内容:

  • 1 IP地址
  • 2 分层结构
  • 3 网络层
  • 4 传输层
  • 5 应用层

IP地址

IP地址是一台机器在局域网或者公网上唯一的标识,比如最常见的我们检测本机的网络好不好使需要ping 127.0.0.1;在局域网的时候,需要设置局域网的地址,比如192.168.0.2;上网的时候,还需要配置猫...种种的操作都与IP地址有关系。

IP地址分类

IP地址的结构是这样的:0-255.0-255.0-255.0-255,但是并不是每一个ip都能随便给别人用的,IP地址大致分为五类:

类型 网络位与主机位 IP范围
A类 前8位为网络位 0开头 1.0.0.0/8-126.0.0.0/8
B类 前16位为网络位 10开头 128.0.0.0/16-191.0.0.0/16
C类 前24位为网络位 110开头 192.168.0.0/24-223.0.0.0/24
D类 不区分网络位和主机位 1110开头 224.0.0.0-232.0.0.0
E类 不区分网络位和主机位 11110开头 233.0.0.0-255.0.0.0

这里的网络位和主机位就涉及到子网掩码的作用了....一般公司或者我们自己上网的IP都是C类的。这个C类的地址只是一个出口,内部会形成一个局域网,内部的IP就随便分类啦...只要最后数据包能从这个口发出去就行啦。

note: 127.0.0.0/8作为环回地址测试使用

回环地址

127.0.0.1是回环地址,这个应该是众所周知的。那么它到底有什么作用呢?搜索了一下知乎的答案,可以这么理解:

127.0.0.1是专门给本机用的,叫做lookback,即回环,它是一块虚拟的网卡。如果本机的两个软件进行通信,就可以直接使用127.0.0.1,这样可以避免再走一次协议栈(物理层、数据链路层、ip层),节省了大量的时间。这个地址一般配置再电脑的hosts文件里面,当然你也可以改...改完大量的软件都可能不好使了...localhost默认就是指向的这个ip地址。

分层结构

计算机网络的体系结构有几种版本,最常见的就是OSI的七层网络模型:

物理层-->数据链路层-->网络层-->运输层-->会话层-->表示层-->应用层

另外还有TCP/IP的五层结构:

物理层-->数据链路层-->网络层-->运输层-->应用层

一般TCP/IP的五层体系结构说的比较多点,就简单的描述下他们每层的作用:

  1. 物理层:这一层涉及到信号的传输,比如双绞线呀、光纤啊等等
  2. 数据链路层:这一层具体的传输数据类,不过是按照Mac物理地址传输的。主要涉及的问题有数据帧的封装、传输和差错检测。有个很有名的机制——CSMA/CD载波监听多点接入/碰撞检测,用来处理传输的时候传输冲突的。
  3. 网络层:这一层涉及到IP到MAC的解析等,涉及到的协议有ARP、RARP、ICMP、IGMP等
  4. 运输层:这个是计算机网络中最重要的一层,因为它里面有两个协议——TCP和UDP,最重要的就是他们的区别,以及TCP的三次握手、四次握手机制,以及一些拥塞控制的方法
  5. 应用层:这一层的内容是与开发最接近的一层,比如DNS、FTP、HTTP、SMTP等等。

数据链路层

这一层主要负责数据帧的封装、传输和差错检测。

网络层

IP数据报

这一层是对数据报的基础封装,主要是针对分片和IP相关的内容:

协议

另外,这一层主要是几个网络协议很重要,其中包括:

ARP地址解析协议

ARP,Address Resolution Protocol 地址解析协议,是根据IP地址获取对应的物理地址。大致的流程是:

比如A主机访问B主机,对应的ip分别为ipa,ipb;对应的Mac地址为maca,macb

那么:

  1. A主机现在自己机器上的路由表,查找ipb对应的macb
  2. 如果找不到则广播请求,如果收到对应的应答,则记录到路由表中

这个APR的缓存一般都是在网卡中记录的。

RARP逆地址解析协议

RARP,Reverse Address Resolution Protocol 用于不知道自己IP只知道Mac地址而想要与其他主机通信的场景。原理过程与ARP差不多。

ICMP网际控制报文协议

ICMP,Internet Control Message Protocol 控制报文协议。这个协议其实日常使用非常多,比如ping和traceroute,它主要用于主机和路由之间传递控制消息。比如网络痛不痛、主机达不达、路由是否可用等等。

IGMP网际组管理协议

IGMP,Internet Group Management Protocol 组管理协议,在组播的场景下比较有用。平时接触的比较少...

单播、多播和广播

  • 单播就是固定的两个ip之间的通信,比如访问网页、看看新闻等等;
  • 多播一般用于局域网内的视频会议等等,可以节省流量。另外现在很火的直播技术,其实用的也是单播,而非组播。因为组播目前公网没有开放,应该是运营商利益问题或者是安全角度考虑吧
  • 广播一般也是在局域网内,比如某个具有探测功能的集群,一般会采用这种方法。

VPN

VPN的全称是Virtual Private Network,是在公网上建立的专用网络,通过复杂的加密手段,可以实现目标地址的远程访问。比如一般的公司,都会开启VPN,这样你放假在家有事情也可以直接连公司的VPN,就像在公司一样进行办公。

常用的端口号

传输层

UDP

UDP, User Datagram Protocol 中文是用户数据报协议。是一种不需要进行连接的传输层协议,提供简单不可靠的服务,没有什么拥塞控制,这种传输协议主要就是用于音频视频的实时传输,丢包无所谓的场景。比如看足球直播,画面花一点或者停顿一下,都是无所谓的,只要后续的传输能正常继续就可以了。使用它的协议包括:TFTP、SNMP、NFS、DNS、BOOTP

特点: 无连接、尽最大努力交付、面向报文;并且没有拥塞控制、支持多种对接方式、首部开销小。

小故事: 据说很多有年代的即时通讯比如QQ底层是基于UDP为主的,主要的原因就是TCP在0几年那个网络环境很差的时代,开销太大。一旦网络发生拥塞,TCP的重传或者三次握手,都会有很大的压力。因此就采用UDP,基于应用层进行重传、乱序等机制的封装。参考资料:QQ为什么以UDP为主TCP为辅

TCP

TCP,Transmission Control Protocol 传输控制协议,它是一种面向连接、可靠的、基于字节流的传输通信协议。在可靠性方面,TCP通过超时重传以及确认机制进行传输;在流量控制方面,采用滑动窗口协议,进行窗口内的分组确认以及重传。

关于流量控制,有个很经典的机制就是——慢开始和拥塞避免,之前在做分布式日志采集的时候,想要引入这种机制来着,后来不了了之了。

TCP的连接采用三次握手机制

三次握手说起来很简单,就是A想和B建立连接,那么需要经过三个步骤:

  1. A发起连接请求
  2. B确认并且发起连接请求
  3. A确认B的连接请求

TCP的释放采用四次握手机制

因为TCP是全双工的通信方式,即两个方向都可以传输数据。因此在释放的时候需要双向进行释放。如果只释放了单向,那么另一个方向也是可以传输数据的。步骤大致如下:

  1. A发起关闭请求
  2. B确认
  3. B发起关闭请求
  4. A确认

状态机

参考

posted @ 2017-11-22 08:31  xingoo  阅读(1069)  评论(0编辑  收藏  举报