计算机网络
一.概述
因特网协议栈
TCP/IP Model:
Layer NameTop-down no.Protocol
Application Layer1HTTP,SMTP,FTP
Transport Layer2TCP,UDP
Internet Layer3IP,ARP,ICMP
Data Link Layer(Frame)4
Physical Layer(Bit)5
常用传输计算
传输时间:文件大小/吞吐量(换算b和B单位)
吞吐量:min{R1,R2} (R*表示每个链路速率)
总时延=处理时延+排队时延+传输时延+传播时延
排队时延:与流量强度:L*a/R(a为分组/s) 正相关
传输时延=L/R(高速网络忽略不计)
传播时延=d/s(短程传输忽略不计)
概念
标准对于协议:Agreement cannot create an interactive network system without standards
内容提供商提供网络动机:First, because it uses fewer intermediate ISPs, content providers can better control the user experience. Second, save money by transferring less traffic.
病毒和蠕虫区别:A virus is a piece of malware that requires user interaction to infect a user's device; the worm does not require user interaction.
僵尸网络(botnet):The attacker spreads the bots through various channels to infect a large number of hosts on the Internet, and the infected host will receive the attacker's instructions through a control channel, and a one-to-many control between the controller and the infected host. The network, which is called a botnet. Therefore, the controller can control a large number of hosts to launch DDos attacks.
二.应用层
1.主要协议端口号
HTTP协议代理服务器常用端口号:80/8080/3128/8081/9098
SOCKS代理协议服务器常用端口号:1080
FTP(文件传输)协议代理服务器常用端口号:20(控制端口)/tcp、21(数据传输端口)/tcp
Telnet(远程登录)协议代理服务器常用端口号:23/tcp
DNS(域名解析服务)默认端口号:53/udp
HTTP服务器,默认端口号:80/tcp
POP3 (邮局协议版本3)使用的端口号:110/tcp
HTTPS(securely transferring web pages)服务器,默认端口号:443/tcp
TFTP(Trivial File Transfer Protocol),默认端口号:69/udp
SSH(安全登录)、SCP(文件传输)、端口号重定向,默认的端口号:22/tcp
SMTP (Simple Mail Transfer Protocol),默认端口号:25/tcp
2.HTTP
非持久性HTTP(nonpersistent connection)
(1)RTT:Roumd Trip Time
从客户端发送数据包到服务器并返回所经历的的时间
Send packets from the client to the server and return the time elapsed
(2)响应时间(RT)
建立TCP:1RTT
发送HTTP请求到HTTP响应消息:1RTT
相应消息所含文件传输时间:T
Total RT=2RTT+T
(3)问题
每个object需要2RTT(1RTT用于三次握手建立TCP,1RTP用于关闭TCP)
操作系统要为每个TCP开销资源
对服务器造成负担较大
持久性连接HTTP(persistent connection)
(1)特点
发送响应后保持TCP连接
后续HTTP可通过TCP连接发送
无流水:客户端收到前一个响应才发出新的请求,每个object耗时1RTT
带有流水机制:客户端只要遇到引用一个对象就快速发出请求,可同时发送所有object。
带有流水机制:理想状态下收到所有对象耗时1RTT
(2)注意
持久性连接中,当所有object的request和来自服务器的response都收到后,TCP连接才关闭,故这两个不同的网页可以在同一个持久连接中传送。
三至七种最基本的响应代码
200("OK")一切正常。实体主体中的文档(若存在的话)是某资源的表示。
500("Bad Request")客户端方面的问题。实体主题中的文档(若存在的话)是一个错误消息。希望客户端能够理解此错误消息,并改正问题。
500("Internal Server Error")服务期方面的问题。实体主体中的文档(如果存在的话)是一个错误消息。该错误消息通常无济于事,因为客户端无法修复服务器方面的问题。
301("Moved Permanently")当客户端触发的动作引起了资源URI的变化时发送此响应代码。另外,当客户端向一个资源的旧URI发送请求时,也发送此响应代码。
404("Not Found") 和410("Gone")当客户端所请求的URI不对应于任何资源时,发送此响应代码。404用于服务器端不知道客户端要请求哪个资源的情况;410用于服务器端知道客户端所请求的资源曾经存在,但现在已经不存在了的情况。
409("Conflict")当客户端试图执行一个”会导致一个或多个资源处于不一致状态“的操作时,发送此响应代码。
Web缓存与Cookie
Cookie
Cookie:给客户端们颁发一个通行证吧,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了
Cookie作用:The cookie determines the identity of the user by recording information on the client, and the session determines the identity of the user by recording information on the server side.
web缓存
Web缓存是指一个Web资源(如html页面,图片,js,数据等)存在于Web服务器和客户端(浏览器)之间的副本。缓存会根据进来的请求保存输出内容的副本;当下一个请求来到的时候,如果是相同的URL,缓存会根据缓存机制决定是直接使用副本响应访问请求,还是向源服务器再次发送请求。比较常见的就是浏览器会缓存访问过网站的网页,当再次访问这个URL地址的时候,如果网页没有更新,就不会再次下载网页,而是直接使用本地缓存的网页。只有当网站明确标识资源已经更新,浏览器才会再次下载网页。
条件性GET:
作用
减少网络带宽消耗(当Web缓存副本被使用时,只会产生极小的网络流量,可以有效的降低运营成本。)
降低服务器压力(给网络资源设定有效期之后,用户可以重复使用本地的缓存,减少对源服务器的请求,间接降低服务器的压力。同时,搜索引擎的爬虫机器人也能根据过期机制降低爬取的频率,也能有效降低服务器的压力。)
减少网络延迟,加开页面打开速度。
3.DNS
介绍
DNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。
流程
递归和迭代见课本p92-p93
4.概念
三.传输层
1.多路复用和解复用(分用)Multiplexing and demultiplexing
复用是指:发送方的不同的应用进程都可以使用同一个传输层协议传送数据;Different application processes of the sender can use the same transport layer protocol to transmit data;
分路技术是指:接收方的传输层剥去报文首部之后能把这些数据正确的传输到正确的应用进程上。After the receiver's transport layer strips the message header, it can correctly transfer the data to the correct application process.
2.TCP
(1)流程
begin(三次握手)
ACK:表示Acknowledgment Number字段有意义
seq:SYN中随机初始序号(避免安全性攻击)
ack:确认号字段
SYN:SYN报文
FIN:表示没有数据需要发送
end(四次挥手)
3.UDP
(1)特征
(2)
4.可靠数据传输原理
3.1、rdt1.0
基本特性:
底层信道完全可靠
不会丢弃分组
有限状态机Finite State Machine互相独立
3.2、Rdt2.0(引入差错控制-接收发送反馈-重传机制)
Underlying Channel Bits Errors
How to detect errors? Checksum
How to recover from errors? Receiver Feedback Acknowledgements: ACKs Negative Acknowledgements: NAKs Retransmission
3.3、Rdt2.1
5.流量控制(Flow control)
(1)机制
但是当某个ACK报文丢失了,就会出现A等待B确认,并且B等待A发送数据的死锁状态。为了解决这种问题,TCP引入了持续计时器(Persistence timer),当A收到rwnd=0时,就启用该计时器,时间到了则发送一个1字节的探测报文,询问B是很忙还是上个ACK丢失了,然后B回应自身的接收窗口大小,返回仍为0(A重设持续计时器继续等待)或者会重发rwnd=x。
(2)功能
防止发送方使接收方缓存区溢出的可能性。换句话说就是流量控制是一个速度匹配服务(匹配发送方的发送速率和接收方的读取速率)
Prevents the sender from the possibility of overflowing the receiver buffer. In other words, flow control is a speed matching service (matching the sender's send rate and the receiver's read rate)
6.TCP拥塞控制(Congestion Control)
(1)功能
所谓的拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致于过载。
The so-called congestion control is to prevent excessive data injection into the network, so that the routers or links in the network will not be overloaded.
(2)四种算法
慢启动(slow start)和拥塞避免(congestion avoidance)算法
慢开始算法是指开始发送数据时,并不清楚网络的负荷情况,会先发送一个1字节的试探报文,当收到确认后,就发送2个字节的报文,继而4个,8个以此指数类推。
需要注意的是,慢开始的“慢”并不是指拥塞窗口的增长速率慢,而是指在TCP开始发送报文时先设置拥塞窗口=1。
拥塞避免算法是让拥塞窗口缓慢地增大,即cwnd加1,而不是如慢开始算法一样加倍。
设置ssthresh为16,之前用慢启动之后用拥塞避免。
快恢复(fast recovery)
快重传是指,如果发送端接收到3个以上的重复ACK,不需要等到重传定时器溢出就重新传递,所以叫做快速重传,而快速重传以后,因为走的不是慢启动而是拥塞避免算法,所以这又叫做快速恢复算法。
Fast retransmission means that if the sender receives more than 3 duplicate ACKs, it does not need to wait until the retransmission timer overflows to retransmit, so it is called fast retransmission, and after fast retransmission, because it is not slow start, Congestion avoidance algorithm, so this is also called fast recovery algorithm.
四.网络层(Internet layer)
1.IP
1.1协议头
1.2.IP路由选择
最特殊的情况是目的主机和主机直连,那么主机根本不用寻找路由,直接把数据传递过去就可以了。至于是怎么直接传递的,这就要靠ARP协议了。
1.3.子网寻址
IP地址的定义是网络号+主机号。但是现在所有的主机都要求子网编址(Subnet addressing),也就是说,把主机号在细分成子网号+主机号。最终一个IP地址就成为 网络号码+子网号+主机号。
2.ARP
3.DHCP
p230开始
4.NAT
p233
5.ICMP
p236
6. IP地址与路由
分类
注意
有限广播地址(Limited Broadcasting):目的地址为255.255.255.255,表示本网络内部广播,路由器不转发这样的广播数据包。
网络号(NSID/The network number):主机号全为0的地址只表示网络而不能表示某个主机,如192.168.10.0(假设子网掩码为255.255.255.0)。
直接广播地址(Directed Broadcast Address):目的地址的主机号为全1,表示广播至某个网络的所有主机,例如目的地址192.168.10.255表示广播至192.168.10.0网络(假设子网掩码为255.255.255.0)。
路由选择算法
所谓的路由算法: 寻找最小费用路径的算法。
(1)链路状态路由算法
p245
(2)DV算法
p249
震荡现象
当链路状态更新的太快并且不断变化的时候,假设我们发出一个分组,结果还没到目的地,路由表就更新了,然后这个数据报就一直在路由间切换,最后由于ttl到0,直接丢弃。这就是震荡现象。
毒性逆转方法(The Reverse-Poison(Split-horizon) Hack)
它的基本思想是:如果Z的最短路径要通过邻居Y,那么它将告诉Y自己到目的节点的距离是∞。
7.子网掩码和IP地址相关计算!
子网掩码计算方式:
由于子网掩码的位数决定于可能的子网数目和每个子网的主机数目.在定义子网掩码前,必须弄清楚本来使用的子网数和主机数目。
(1)根据子网数
如欲将B类IP地址168.195.0.0划分成27个子网:
1)27=11011
2)该二进制为五位数,N = 5
3)将B类地址的子网掩码255.255.0.0的主机地址前5位置1(B类地址的主机位包括后两个字节,所以这里要把第三个字节的前5位置1),得到 255.255.248.0
(2)根据主机数
如欲将B类IP地址168.195.0.0划分成若干子网,每个子网内有主机700台:1) 700=10101111002)该二进制为十位数,N = 103)将该B类地址的子网掩码255.255.0.0的主机地址全部置1,得到255.255.255.255然后再从后向前将后10位置0,即为: 11111111.11111111.11111100.00000000
即255.255.252.0。这就是该欲划分成主机为700台的B类IP地址168.195.0.0的子网掩码。
网络前缀
概念:
例题:
五.链路层(data link layer)
1.CRC校验计算
到达接收端后,再把接收到的新帧除以(同样采用“模2除法”)这个选定的除数。因为在发送端发送数据帧之前就已通过附加一个数,做了“去余”处理(也就已经能整除了),所以结果应该是没有余数。如果有余数,则表明该帧在传输过程中出现了差错。
例题:
除数:10111 位数 k=5
信息比特:10011010110000(添加k-1位0)
10011010110000/10111
余数(k-1位少了的在前面用0补):1111
CRC码:1111
发送码:10011010111111
六.物理层(physical layer)
1.
七.其他协议
1.SSL
SSL 运行在应用层;如果想要强化TCP,需要把 SSL 的代码写到程序里;
UDP不使用SSL
2.802.11
p349