一学期的全英教学虽然让我们更接近网络的基础结构,但也为我们的考试复习带来了很大难题,何况宋先生还不给我们提纲。没有什么好的学习方法,只能系统的写下这篇博客,本文内容纯属个人理解,有错误的地方还请与我联系。
本文极其冗长乏味,请在家长陪同下观看!如有雷同,纯属巧合
笔者认真地翻阅过一遍计算机网络后,发现此门学科其实没有你想象的那么难,只是其内容的琐碎繁杂使得你拒之门外了而已。在我看来,计算机网络有着清晰的层次结构,我们完全可以按照这个模型逐层剥离,自顶向下地来分析学习,没错,就是下面这本书了(不管第几版吧),介绍的很完全,挺好的一本书。
我们先来列一个学习目录
CH.1 计算机网络概述[Introduction]
a. 什么是因特网?[What is the Internet?]
b. 网络边缘[The network edge]
c. 网络核心[The network core]
c.1 电路交换[Circuit Switching]
c.2 分组交换[Packet Switching]
d.分组交换中的时延,丢包,吞吐量[Delay,Loss,Throughput]
e.协议层及它们的服务模型[Protocol Layers & Service Models]
CH.2 应用层[Application Layer]
a. 设计原则[Principles]
b. Web and HTTP
c. 文件传输[FTP]
d. 电子邮箱[Electronic Mail]
d.1 简单邮件传输协议[SMTP]
d.2 邮局协议[POP3]
d.3 邮件访问协议[IMAP]
e. 域名系统[DNS]
CH.3 传输层[Transport Layer]
a. 介绍[Introduction]
b. 多路复用与多路分解[Multiplexing and Demultiplexing]
c. 用户数据报协议[UDP]
d. 可靠数据协议[reliable data transfer]
e. 传输控制协议[TCP]
f. 阻塞控制[Congestion control]
CH.4 网络层[Network Layer]
a. 路由和转发[Routing and Forwarding]
b. 虚电路与数据报[Virtual-Circuit and Datagram Networks]
c. 路由器[Router]
d. 网络互联协议[IP]
e. 路由算法及协议[Routing algorithms abd protocols]
e.1 链路及矢量算法[Link-State versus Distance Distance-Vector]
e.2 RIP & OSPF & BGP
f. 广播与多播路由[Broadcast and Multicast routing]
CH.5 链路层及局域网[Link Layer and LAN]
a. 介绍[Introduction]
b. 错误检测与校正[Error Detection/Correction]
c. 多路访问协议[Multiple Access Protocols]
c.1 信道划分协议[Channel Partitioning Protocols]
c.2 随机接入协议[Random Access Protocols]
c.3 轮流协议[Taking-Turns Protocols]
d. 链路层处理[Link-Layer Addressing]
d.1 MAC 地址
d.2 地址解析协议[Address Resolution Protocols]
e. 以太网[Ethernet]
f. 链路层交换机[非重点]
CH.6 无线与移动网[Wireless and Mobile Networks]
a. WiFi:802.11 Wireless LANs
b. 蜂窝[Celluar internet Access]
CH.7 总结[Summary]
这是一段长长的目录,不要被它吓到,我们从thin(心)开始
一、计算机网络概述
我在知乎看到了一段非常不错的总结,就直接丢过来用了,感谢回答者花潇!
"我们的因特网,肯定是基于物理电路的,因此,我们需要一个将数据转化为物理信号的层,于是,物理层诞生啦
有了处理物理信号的物理层,可我们还得知道,信号发给谁啊,你肯定知道,每个主机都有一个全球唯一的MAC地址吧,所以我们可以通过MAC地址来寻址啊,恭喜你,链路层诞生了
别急,你知道MAC地址是扁平化的吧,也就是说,MAC地址的空间分布,是无规律的!!!如果你有十万台主机,要通过MAC地址来寻址,简直无F**K可说。不管怎样说,这么大的数据量,我们需要有个解决办法所以我们引入IP地址,网络层应运而生
然而,一台主机不能只和一台服务器通信啊,毕竟下小电影,也要同时货比三家啊。那如何实现并行通信呢?嘿嘿,我们有端口号啊,基于不同的需求,产生了UDP&TCP,运输层也诞生啦
别急,你知道的吧,不同应用、不同的传输需求,比如请求网页、发邮件什么的,为了方便开发者,我们对这些常用需求进行了封装这样就有了应用层的诞生"
这算是自底而上的讲述了计网,虽与我们本书正好相反,但思想是一样的,由此我们可以更好地理解每层layer的含义以上,你应该了解了计算机网络是门怎样的学科,如果你对这些已经了然于心,则完全可以跳过。
What is the Internet?
这是个宽泛的定义,原书把它描述为两种:
- 根据硬件(
basic hardware
)和软件组件(software components
)构成的描述2. 根据基础设施(infrastructure
)向分布式应用程序(distributed applications
)提供的服务描述对于协议的定义:一个协议定义了在两个或多个通信实体之间交换的报文格式和次序,以及在报文或其他事件方面所采取的动作、传输和/或接收。(不知道考不考)参考:protocols define format, order of msgs sent and received among network entities, and actions taken on msg transmission, receipt
我们具体来看看网络核心部分
Network Core
Packet Switching分组交换技术(packet switching)
也称包交换,是将用户传送的数据划分成一定的长度,每个部分叫做一个分组,通过传输分组的方式传输信息的一种技术。
Circuit Switching电路交换方式(circuit switching)是指在同一电信网用户群中任意两个或多个用户终端之间建立电路暂时连接的交换方式。
Message Switching(书中暂未提到,了解即可)
Versus traits
分组交换基于存储转发(store-forward)的方式,利用率高,交互性高,只是在时延上要高于电路交换>电路交换中常用的两种多路复用技术是FDM(频分)和TDM(时分)
Delay,Loss and Throughput
Delay让我们记住一个公式,它很好地展示了四种时延的关系dnodal=dprocessing+dqueuing+dtransmission+dpropagation
Protocol Layering
我们要介绍的是service model
,我们一般将网络层次划分为:
FTP, SMTP, HTTP- transport: process-process data transfer
TCP, UDP- network: routing of datagrams from source to destination
IP, routing protocols- link: data transfer between neighboring network elements
Ethernet, 802.11 (WiFi), PPP- physical: bits “on the wire”它们相应的数据传输单元相应是message
->segment
->datagram
->frame
->bit
有了良好的层次模型,我们就可以处理许多复杂问题了
Test
现在的你已经对计算机网络有一些清楚的认识了,让我们做点小测(别着急看答案)Q. Identify the five components of a data communications system. A: (数据通信系统5个组成部分:报文 发送方 接受方 传输介质 协议)
message,sender,receiver,transmission medium and protocol. Q. What advantages does TDM versus FDM in a circuit-switched network?A.FDM需要复杂的模拟硬件将信号转换成适当的频带。
FDM requires sophisticated analog hardware to shift signal into appropriate frequency bands.Q.According to the geographical coverage of the classification, the computer network can be divided into three categoriesA.局域网,城域网,广域网
LAN、MAN(metropolitan)、WAN
Application Layer
让我们红尘作伴,活的潇潇洒洒~
策马奔腾,来到应用层应用层的两种体系结构:
-
Client-Server
(BS算是CS的特例) -
Peer-to-Peer
(P2P)
CS主机A如果运行客户端程序,而主机B运行服务端程序,客户A向服务端B发送请求服务,服务器B向客户A提供服务,这种情况下,就是以CS的方式进行通信。我们所指的客户和服务器都是指通信中涉及的两个应用进程,而不是具体的主机。特点:
server:always-on host、permanent IP address``client:can be intermitted,dynamic IP address
P2P以对等方式进行通信,并不区分客户端和服务端,而是平等关系进行通信。在对等方式下,可以把每个相连的主机当成既是主机又是客户,可以互相下载对方的共享文件。比如迅雷下载就是典型的P2P通信方式。特点:no always-on server、can be intermitted、self-scalability(自扩展性)
Tips: the network through a software interface called asocket
socket的通信方式看上去如下图
Internet transport protocols services
TCP service- reliable transport- flow control- congestion control- does not provide: timing, minimum throughput guarantee, security- connection-oriented
UDP service- unreliable data transfer- does not provide: reliability, flow control, congestion control, timing, throughput guarantee, security, orconnection setup
Expand: TCP和UDP都没有提供任何加密机制,由于存在种种隐私和其他安全问题,人们研制了TCP的加强版本,称为安全套接字层(Secure Socket Layer, SSL
)。SSL不是独立于TCP和UDP的第三种协议,而只是对TCP的增强。这种增强是在应用层上实现的。一张图看下应用场景
HTTP[the HyperText Transfer Protocol]
http有两种连接方式:持久层(persistent HTTP
)和非持久层(non-persistent HTTP
),默认是持久层>非持久层这里我们定义一个概念,RTT
:round-trip time,它被解释为客户端收发一个包所用的时间
由图可以看出 response time
=2RTT+ file transmission time
持久层我们给出一段http请求报文
GET /somedir/page.html HTTP/1.1Host: www.someschool.eduConnection: closeUser-agent: Mozilla/4.0Accept-language: fr
HTTP请求报文第一行叫做请求行(request line)
,其后继的行叫做首部行(header line)
。请求行有3个字段:方法、URL、HTTP协议版本。
一个响应报文HTTP/1.1 200 OKConnection: closeDate: Thu, 03 Jul 2003 12:00:15 GMTServer: Apache/1.3.0 (Unix)Last-Modified: Sun, 6 May 2007 09:23:24 GMTContent-Length: 6821Content-Type: text/html(data data data ...)
上面是一个HTTP响应报文的示例。响应报文分成3部分:状态行(status line)
、首部行(header line)
、实体主体(entity body)
。状态行有3个字段:协议版本、状态码、响应状态信息。我们给出一些常见的状态码,希望你好好铭记哦```200 OK: 请求成功,信息包含在返回的响应报文中301 Moved Permanently: 请求对象已经被永久转移了400 Bad Request: 请求不能被服务器理解404 Not Found: 请求的文档不在服务器上505 HTTP Version Not Supported: 服务器不支持请求报文使用的HTTP协议版本
Tips:` HTTP/1.1比HTTP/1.0多出了5种方法类型,而我们最常用的有GET、POST、PUT、DELETEHTTP协议是无状态的,为了能够识别用户,HTTP使用cookie这项技术。
Cookies
- 在HTTP响应报文中有一个cookie首部行
- 在HTTP请求报文中有一个cookie首部行
- 在用户端系统中保留有一个cookie文件,由用户浏览器管理
- web站点有一个后台数据库web缓存器(web cache)也叫代理服务器(proxy server),它是能够代表初始web服务器来满足HTTP请求的网络实体。以上cookie、webcache了解即可,不会考太多
FTP:the file transfer protocol
FTP运行在TCP上,使用两个并行的TCP连接来传输文件,一个是控制连接(control connection
),一个是数据连接(data connection
)。
Electronic Mail in the internet
电子邮件系统主要由3各部分组成:用户代理(user agent)、邮件服务器(mail server)和简单邮件传输协议(Simple Mail Transfer Protocol, SMTP
)。
SMTP在握手阶段,SMTP客户机指明发送方的邮件地址和接收方的邮件地址。握手阶段结束后,客户机开始发送邮件报文。SMTP可以利用TCP提供的可靠数据传输无差错地将邮件投递到接收方的服务器。SMTP使用的是持久连接。
Mail Access Protocol
前面介绍了邮件服务器之间利用SMTP协议传送邮件的过程。现在,我们继续来看用户代理与邮件服务器之间是如何传输的。A向B发邮件时,A的用户代理会利用SMTP协议把邮件推送到其所在的邮件服务器,邮件服务器再利用SMTP协议将邮件发送给B所在的邮件服务器。注意,这里B的用户代理不能用SMTP协议去向服务器取回邮件,因为取邮件是一个拉操作,而SMTP是一个推协议。于是邮件访问协议横空出世目前有多个流行的邮件访问协议,包括第三版邮局协议(Post Office Protocol-Version 3, POP3
)、因特网邮件访问协议(Internet Mail Access Protocol, IMAP
)以及HTTP,我们需要记住这些
DNS
因特网的目录服务主机的识别方式有两种:主机名和IP地址。主机名可以方便人们记住,而路由器则喜欢格式化的IP地址。域名系统(Domain Name System, DNS
)的主要任务就是实现主机名到IP地址的映射转换。DNS是一个由分层的DNS服务器实现的分布式数据库(distributed, hierarchical
),是一个允许主机查询分布式数据库的应用层协议。与HTTP、FTP、SMTP协议一样,DNS协议也是应用层协议。它运行在UDP之上,使用客户机/服务器模式在通信的端系统之间运行,在通信的端系统之间通过下面的端到端运输层协议来传送DNS报文。
Test
Q:does IP address of host on which process runs suffice for identifying the process?(进程运行中的ip地址是否足以识别进程?)
A: no, many processes can be running on same host
Q: What transport service does an app need?(应用层需要传输层提供怎样的服务?)
A: data integrity(数据完整性)、throughput(吞吐量)、timing(实时性)、security(安全性)
Q: what cookies can be used for:
A: authorization(授权)、shopping carts(购物车)、recommendations(推荐)、user session state (Web e-mail)
Q: what does the DNS servers include?
A:Root DNS servers(13种)、Top-Level domain(TLD) servers、Authoritative DNS servers