计算机网络精要

一、概述

  1. 应用层交互数据单元为报文(Message)
  2. 运输层为主机间进程的通信提供通用的数据传输服务。TCP对应的是报文段(segment),UDP对应的是用户数据报(datagram)
  3. 网络层把运输层产生的数据封装成分组或包,在TCP/IP协议中,又称IP数据报
  4. 数据链路层将IP数据报组装为帧(framing),在TCP/IP协议簇里,运输层也可以使用UDP协议哦
  5. 物理层传输数据单位是bit
  6. 对等层次之间传输的数据单位称为该层的协议数据单元(PDU)

二、物理层

  1. 我们传输的数据一般是计算机输出的比特流,需要经过调制之后才能通过信道传输。如果信道频带越宽,那么最大传输速率就会越快。调幅(AM modulation),调频,调相。
  2. 信噪比,为平均功率之比,记为S/N,香农公式指出带宽或者信噪比越大,信息极限传输速率(bit/s)就越高, W为带宽.
    C = W l o g 2 ( 1 + S / N ) C=Wlog_2(1+S/N) C=Wlog2(1+S/N)

一、传输媒体
1)导引型

  1. 双绞线(Twisted Pair),两根互相绝缘的铜导线并排放在一起,各自绞合
  2. 同轴电缆,内导体铜质芯线、绝缘层、屏蔽层。高质量的带宽已达1GHz
  3. 光缆,有光脉冲计为1,无计为0,光纤传输带宽远远大于其它

2)非导引型
无线传输可使用的频段很广,微波通信在数据通信地位很重要。微波频率范围300MHz~300GHz,主要使用2 ~ 40GHz范围。微波频率高,范围宽,信道容量大,且工业干扰频率低很多,所以传输质量也较高,但不能有障碍物,中继站多。卫星通信具有较大的传播时延,毕竟距离很远,但覆盖面广。

二、信道复用技术
最基本的为频分复用(FDM Frequency Division Multiplexing)和时分复用(TDM)

三、宽带接入技术
用户需要先连接到ISP,以便获得上网必须的IP地址


三、数据链路层

网络层能够将多个网络互连。
数据链路(data link)除了需要一条物理线路(有线或无线)外,还需要必要的通信协议来控制数据传输。实现协议最常用的方法是使用网络适配器。

一、封装成帧
在一段数据加上首部(SOH,Start Of Header)和尾部(EOT,End Of Transmisson),SOH与EOT是在ASCII码表中,编码为01和04。

二、透明传输
如果我们传输的是文本(ASCII码),不会出现数据内部等于EOT而提前结束的问题。图像、程序这种就有可能,因此我们在数据部分扫描等于SOH或EOT,在前面加一个转义符ESC,这种方法叫字节填充。那么接收端就把这个转义字符删了。

三、差错检测
CRC,循环冗余检测,即通过在数据段末尾添加余数(n位冗余码,也叫FCS,Frame Check Sequence,帧检测序列),接收端收到后用对应的除数运算,如果能够整除则数据无误。这种检测方法能够做到比特无差错,即帧内容正确。更复杂的传输差错就是帧丢失、重复、失序。过去OSI要让数据链路层向上提供可靠传输,增加了帧编号、确认和重传机制(HDLC,High-LEvel Data Link Control)。但现在通信质量较高,数据链路层协议广泛使用点对点协议(PPP,Point-to-Point Protocal),可靠协议由运输层的TCP协议负责。

一、PPP协议

HDLC和PPP帧格式非常相近,HDLC面向bit,PPP面向字节。PPP比HDLC多了两个字节的协议字段,判断帧封装的信息字段是IP数据报or LCP数据。主要用于拨号接入Internet的场合。

PPP协议是用户计算机和ISP通信所使用的数据链路层层协议。有三个组成部分:
1)一个将IP数据报封装到串行链路的方法
2)一个用来建立、配置和测试数据链路层链接的链路控制协议(LCP, Link ConTrol Protocal)
3)一套网络控制协议(NCP, Network Control Protocal)

分为异步传输和同步传输,前者使用特定的字节填充,后者使用零比特填充。

流程图等具体过程见书P81

二、以太网

以太网是一种局域网,只是由于目前大多数的局域网是以太网,所以一般说局域网,大家都默认为以太网。

总线型以太网采用无连接的工作方式,为了协调各计算机之间的工作,使用了CSMA/CD协议,即载波监听多点接入/碰撞检测。

以太网中,数据链路层封装MAC帧。MAC地址为6字节,前3字节由法定管理机构规定。MAC地址被固化在适配器的ROM中。这里使用的是数据链路层的MAC协议,帧尾部没有界定符,因为以太网采用曼彻斯特编码。

扩展以太网
可以在物理层进行扩展,即使用集线器将主机连接,但碰撞域会增大,限制更多。
在数据链路层扩展,交换式集线器/以太网交换机,有很多接口,具有并行性。
现在主流的以太网结构为星型,不使用共享总线,所以没有碰撞问题,不实用CSMA/CD协议。
虚拟局域网VLAN,能够将LAN重新划分,突破物理接线的限制。

用以太网接入互联网,则将PPP协议中的PPP帧再封装到以太网来传输。这就是PPPoE(PPP over Ethernet)。在楼口安装一个以太网交换机,用线接到用户家中,这样用户家中就只有RJ45接口。


四、网络层

网络层在发送分组时不建立连接,独立传递每一个IP数据报,因此质量不能承诺。
网际协议IP是TCP/IP体系中两个最主要的协议之一。与IP协议配套使用的还有三个协议,层次关系为,(从上到下)

ICMP(Internet Control Message Protocal)/ IGMP(Group Management)
IP
ARP(Address Resolution Protocol)地址解析协议

之前说的集线器、交换机等仅仅能够扩大网络,我们说的网络互连一般指路由器进行网络互连和路由选择。因此路由器一定会有两个及以上的IP地址,每个接口对应不同的IP地址。

一、IP地址

每一个IP地址均由网络号和主机号组成,共32位。常见的为ABC三类。

  • A类地址网络号字段占一个字节,但仅有7位可用,因为第一位固定为0。当为00000000时,指本网络,为01111111时,如127.0.0.1,则IP数据报只会在本主机上,不会出现在其他网络。即127根本不是一个网络地址。A类主机号为三个字节,每个网络号最大主机数为 2 24 − 2 2^{24}-2 2242,全0表示本主机所连接的单个网络地址,全1表示该网络上的所有主机。
  • B类网络号为2个字节,前两位10固定,只剩14位,因为128.0.0.0不可指派,最小为128.1.0.0所以网络号总数为 2 14 − 1 2^{14}-1 2141。每个网络号最大主机数为 2 16 − 2 2^{16}-2 2162
  • C类网络号为三个字节,前三位110固定,最小为192.0.1.0。每个网络号最大主机数为 2 8 − 2 2^{8}-2 282

路由器只根据目的地站的IP地址进行路由选择。也就是说,在确定传输一个文件时,IP数据报的首部包含的源站IP地址和目的地IP地址不会改变,改变的是数据链路层的MAC帧。知道IP地址,如何找出MAC首部的硬件地址,则需要ARP,地址解析协议。

ARP(Address Resolution Protocal)协议
之前列出了网络层协议顺序,则说明IP协议使用了ARP协议。
每一台主机都设有一个ARP高速缓存cache,里面有本局域网上的各主机和路由器的IP(32位)到MAC(48位)的映射表。
更新过程如下:
ARP进程在本局域网广播发送一个ARP请求,包含源主机A的IP、MAC地址和目的地IP地址,主机B发现和查询的IP地址一致,因此响应给A,包含自己的MAC地址,为单播。然后A、B互相将对方的映射记录到自己的ARP缓存里,同时为每一个映射设定一个生存时间,超过这个时间就要删除。如果要找的不在同一个局域网,则需要通过路由器不断地传递给下一个局域网去找了。

IP数据报 // P128
IP数据报首部的固定部分为20字节,且首部一定是4字节的整数倍,不够的会用填充字段补齐。
片位移字段代表分片后(因为数据过长)相对于起点的位置。每个分片的长度一定是8字节的整数倍。每帧片位移=前面数据的长度(字节)/ 8
IP数据报总长度不能过长,因为IP层下面的每一种数据链路层协议都规定了一个数据帧中数据的最大长度,成为最大传送单元(MTU,Maximum Transfer Unit),封装后的帧不能超过这个长度,最常用的以太网规定MTU为1500字节。
生存时间(TTL),现在单位是跳数,每被路由器转发一次就减1。设置TTL=1,则表示这个数据包只在局域网中传送。
首部检验和,只检验数据报的首部,不包括数据部分。

路由表,一行对应一个网络。

二、划分子网

互联网中的网络数越多,则路由表会变得越大,性能会降低。
划分子网将二级IP地址变为三级IP地址。对外表现为一个网络。划分子网是借主机号的若干位作子网号的。子网掩码帮助我们得到对应的网络地址,只需进行AND计算。使用子网划分后,路由表将增加子网掩码。
举例:
一个B类地址,子网号位数2位,子网掩码为255.255.192.0(第17,18位置1),子网数2(位数平方-2,子网号不能全0、1,但现在也可以使用了)

三、无分类编址CIDR

消除了ABC等分类以及子网的概念,采用网络前缀(network-prefix)+主机号的形式,并加上/和网络前缀所占的位数。但不代表不能划分子网,CIDR不使用子网是说在CIDR中没有像之前那样有专门的子网字段,从主机位上借来的全部归入网络前缀去了。

路由选择

1)内部网关协议IGP

  • 距离向量协议RIP,使用UDP数据报
  • 链路状态协议OSPF,直接使用IP数据报
    2)外部网关协议EGP,目前使用最多的是BGP-4协议

五、运输层

网络层为主机之间提供逻辑通信,运输层为应用进程之间提供端到端的逻辑通信。同时也说明一个很重要的功能,复用(Multiplexing) 和分用(Demultiplexing) 正如之前所说,为了提高效率,现在差错检测只在运输层进行。

一、两个主要协议

UDP在传送数据之前不需要先建立连接
TCP则提供面向连接的服务。TCP不提供多播或广播服务。
运输层为了识别进程,使用协议端口号,简称端口(port),属于协议栈层间的抽象端口属于软件端口,和路由器或交换机端口是完全不同的。
因为大多采用客户-服务器的方式,因此分两大类

  1. 服务器端使用的端口号
    熟知端口号(well-known port number),0~1023
    登记端口号,1024~49151
  2. 客户端使用的端口号,又叫短暂端口号,49152~65535。当服务器进程收到了客户进程的报文时,就知道了客户进程所用的port,因此可以发送给客户进程。通信结束,刚才使用的客户端口号不复存在,可以给其他进程使用。
1.用户数据报协议UDP
  1. UDP是无连接的,因此减少了开销和发送数据之前的时延。
  2. UDP面向报文,即应用程序交下来的报文,不合并不拆分,加上头部就传给网络层。如果太长,那只能让IP层进行划分了。
    首部开销很小,只有8个字节,而TCP有20个字节。

用户数据报UDP的首部字段,按顺序:源端口、目的端口、长度、检验和。
源端口是需要对方回信用的,不用时可全用0,目的端口必须要。当运输层从IP层收到UDP数据报后,就根据目的端口传给相应的端口,上交给应用进程。
UDP数据报也有检验和,首部和数据都检验。注意:IP数据报只检验首部,需要添加12字节的伪首部。

2.传输控制协议TCP
  • TCP是面向连接的。因此,在使用TCP协议之前,必须先建立TCP连接,传输完数据,必须释放已经建立的连接。
  • TCP提供全双工通信,连接的两端设有发送缓存和接受缓存,用来临时存放通信数据。
  • TCP的连接是一个抽象的概念。它的两个端点不是运输层的协议端口,而是套接字(socket),socket=(IP地址:端口号)
二、可靠传输的工作原理
1.停止等待协议

即每发送完一个分组就停止发送,等待对方确认,再发送下一个分组。
具备超时重传,发送完即设定超时计时器,若在规定时间内没有收到确认回复,则重传已发送的副本(暂时保留)。这种可靠的传输协议常称为自动重传请求ARQ(Automatic Repeat Request)。

2.连续ARQ协议

如果是要收到前一个分组确认后再发送新的,信道利用率会非常低。 T D T_D TD相比RTT很小。因此不使用之前的停止等待协议,而采用流水线传输。
U = T D T D + R T T + T A U=\frac{T_D}{T_D+RTT+T_A} U=TD+RTT+TATD
滑动窗口是TCP协议的精髓所在。发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。接受方一般采用累积确认的方式,不是一个个分组确认,而是在收到几个分组后,对按顺序到达的最后一个分组发送确认。当然,如果中间一个分组丢失,前半部分不受影响,但后半部分必须全部重传,这就叫Go-back-N。

。。。


六、应用层

运输层为应用进程提供了端对端的通信服务,但不同的网络应用的应用进程之间,存在不同的通信规则。因此在上层,需要能够保证不同网络应用的进程之间的通信和协同工作。应用层的具体内容就是精确定义通信规则。

域名到IP地址解析:把待解析的域名放在DNS请求报文中,以UDP数据报方式发送给本地域名服务器,查找域名后,把对应的IP地址回复。

我们知道域名是分层级的,呈树状结构。最上面即为根域名,是没有内容的,然后是顶级域名、二级域名…域名服务器也呈对应的结构,一个服务器所负责的区域叫区(zone),不是域,区小于或等于域。

根域名服务器是最高层次的域名服务器,所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址。如果本地域名服务器无法解析,首先就会求助于根域名服务器。
查询域名的过程有两种方式:

  1. 递归查询:主机-本地域名服务器-根域名-顶级域名-权限域名-顶级-根-…主机
  2. 迭代查询:根服务器告诉本地服务器顶级的IP地址,然后本地就去找顶级域名服务器,依次查到最后结果。

为了提高速度,域名服务器广泛使用高速缓存。本地域名服务器查询某个域名的IP地址,如果之前有查过,就直接返回给主机。

一、万维网WWW

万维网并非某种特殊的计算机网络,而是一个大规模的、联机式的信息储藏所,简称Web。万维网以客户服务器方式工作,浏览器就是万维网客户程序,万维网文档所在的主机则运行服务器程序。
URL格式:<协议>://<主机>:<端口>/<路径>,有些浏览器可以省略http://或者www,会自动补全。如果我们是HTTP的URL,默认端口号是80,可以省略。当我们省略路径时,那就指到主页(home page)。协议和主机不区分大小写,路径有时要区分。

当我们访问一个网站时,首先要和服务器建立TCP链接,需要三报文握手,当前两部分完成后,将HTTP请求报文作为第三次握手报文发给服务器,服务器收到请求后,返回HTTP响应。HTTP/1.0就是时间开销大,需要两个RTT。HTTP/1.1能够持续连接。

关于请求报文、响应见Web安全:HTTP请求

电子邮件,简单邮件传送协议SMTP(Simple Mail Transfer Protocal),单可传送ASCII码,后来提出MIME(Multipurpose Internet Mail Extensions),可以传送多种类型数据。邮件读取协议如POP3。

二、动态主机配置协议DHCP

协议软件的参数是需要赋值的,如IP地址、子网掩码等。人工进行协议配置很麻烦,现在广泛采用动态主机配置,当计算机加入网络后获取IP地址不用手工参与。DHCP服务器分配给DHCP客户的IP地址是临时的,租用期可以改变。

注:SNMP等暂时跳过

三、系统调用和API

操作系统一般使用系统调用的机制在应用程序和操作系统之间传递控制权。有点像调用函数那样。当启动系统调用时,先将控制权给系统调用接口(socket API),然后再给操作系统,然后转给某给内部过程并执行请求的操作。socket有很多个意思
现在TCP/IP协议软件已经驻留在操作系统里,定义的API又称套接字接口(socket interface)。当应用进程要进行网络通信时,首先发出socket系统调用,请求操作系统为其创建一个套接字(一些系统资源),用套接字描述符(socket函数返回值)来表示,把这个描述符(本地远地IP地址、本地远地端口等等)返回给应用进程。
在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个socket,并绑定到一个端口上,不同的端口对应于不同的服务。正如其英文原义那样,像一个多孔插座。


基本是看完了,如果之后有具体的学习,会更新在Web安全一栏里。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值