计算机网络基础知识
计算机网络基础知识汇总
传输层:TCP与UDP
- TCP:Transmission Control Protocol 是一种面向连接的、可靠的、基于字节流的传输层通信协议
- UDP:用户数据报协议
什么是三次握手

SYN_SENT:表示请求连接
ACK:表示响应
RST:连接重置
Sequence number:序列号
Acknowledge number:确认号
- 第一次握手:Client将SYN置1,随机产生一个初始序列号seq发送给Server,进入请求链接状态;
- 第二次握手:Server收到Client的SYN=1之后,知道客户端请求建立连接,将自己的SYN置1,ACK(响应)置1,产生一个acknowledge number(
确认号)=sequence number(序列号)+1,并随机产生一个自己的初始序列号,发送给客户端;进入SYN_RCVD(准备)状态; - 第三次握手:客户端检查acknowledge number是否为序列号+1,ACK是否为1,检查正确之后将自己的ACK置为1,产生一个acknowledge
number=服务器发的序列号+1,发送给服务器;进入ESTABLISHED(已链接)状态;服务器检查ACK为1和acknowledge
number为序列号+1之后,也进入ESTABLISHED(已链接)状态; - 完成三次握手,连接建立。
TCP建立连接可以两次握手吗?为什么?
不可以。可能会出现以下情况:已失效的连接请求报文段又传到了服务器端。
若client发出的请求报文段并没有丢失,而是在某个网络节点滞留了,以至于在连接释放后的某个时间才到达server。这本应该是一个失效的报文段,但server认为这是client的一个新的连接请求,于是向client发送确认报文段,同意连接。如果是两次握手,那么只要服务器发送确认报文段,及连接建立。由于现在client并没有请求连接,不会理睬server发送的确认报文段,但server会误以为已经建立连接,持续等待接收数据,造成资源浪费。采用
“三次握手”就可以避免上述现象发生
可以采用四次握手吗?为什么?
可以。但是会降低传输效率
四次握手是指:第二次握手:Server只发送ACK和acknowledge
number;而Server的SYN和初始序列号在第三次握手时发送;原来协议中的第三次握手变为第四次握手。出于优化目的,四次握手中的二、三可以合并。
第三次握手中,如果客户端的ACK未送达服务器,会怎样?
由于Server没有收到ACK确认,因此会重发之前的SYN+ACK(默认重发五次,之后自动关闭连接),Client收到后会重新传ACK给Server。
如果Client向服务器发送数据,服务器会以RST包响应。
如果已经建立了连接,但客户端出现了故障怎么办?
服务器每收到一次客户端的请求后都会重新复位一个计时器,时间通常是设置为2小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75秒钟发送一次。若一连发送10个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接。
初始序列号是什么?
TCP连接的一方A,随机选择一个32位的序列号(Sequence Number)作为发送数据的初始序列号(Initial Sequence
Number,ISN),比如为1000,以该序列号为原点,对要传送的数据进行编号:1001、1002…三次握手时,把这个初始序列号传送给另一方B,以便在传输数据时,B可以确认什么样的数据编号是合法的;同时在进行数据传输时,A还可以确认B收到的每一个字节,如果A收到了B的确认编号(acknowledge
number)是2001,就说明编号为1001-2000的数据已经被B成功接受。
什么是四次挥手

FIN:表示关闭连接
PSH:表示有 DATA数据传输
FIN_WAIT_1:等待远程TCP连接中断请求,或先前的连接中断请求的确认
CLOSE_WAIT:等待从本地用户发来的连接中断请求
TIME_WAIT:在主动关闭端接收到FIN后,TCP就发送ACK包,并进入TIME-WAIT状态,等待足够的时间以确保远程TCP接收到连接中断请求的确认
- 第一次挥手:Client将FIN置为1,发送一个序列号seq给Server;进入FIN_WAIT_1(关闭等待)状态;
- 第二次挥手:Server收到FIN之后,发送一个ACK=1,acknowledge number=收到的序列号+1;进入CLOSE_WAIT(关闭等待)
状态。此时客户端已经没有要发送的数据了,但仍可以接受服务器发来的数据。 - 第三次挥手:Server将FIN置1,发送一个序列号给Client;进入LAST_ACK状态;
- 第四次挥手:Client收到服务器的FIN后,进入TIME_WAIT状态;接着将ACK置1,发送一个acknowledge
number=序列号+1给服务器;服务器收到后,确认acknowledge number后,变为CLOSED状态,不再向客户端发送数据。客户端等待2*
MSL(报文段最长寿命)时间后,也进入CLOSED状态。 - 完成四次挥手
为什么不能把服务器发送的ACK和FIN合并起来,变成三次挥手(CLOSE_WAIT状态意义是什么)?
因为服务器收到客户端断开连接的请求时,可能还有一些数据没有发完,这时先回复ACK,表示接收到了断开连接的请求。等到数据发完之后再发FIN,断开服务器到客户端的数据传送。
如果第二次挥手时服务器的ACK没有送达客户端,会怎样?
客户端没有收到ACK确认,会重新发送FIN请求。
客户端TIME_WAIT状态的意义是什么?
第四次挥手时,客户端发送给服务器的ACK有可能丢失,TIME_WAIT状态就是用来重发可能丢失的ACK报文。如果Server没有收到ACK,就会重发FIN,如果Client在2*
MSL的时间内收到了FIN,就会重新发送ACK并再次等待2MSL,防止Server没有收到ACK而不断重发FIN。
MSL(Maximum Segment Lifetime)
,指一个片段在网络中最大的存活时间,2MSL就是一个发送和一个回复所需的最大时间。如果直到2MSL,Client都没有再次收到FIN,那么Client推断ACK已经被成功接收,则结束TCP连接。
TCP如何实现流量控制

我们都知道TCP是一种可靠的,面向连接的传输层协议。我们总是希望TCP能够传输的数据越快越好。如果存在这样一种情况,发送方数据发送的非常快,而且接收方耗尽自己的资源也根本来不及接收,那这些多余的数据就会被丢弃,这就违背了TCP可靠的宗旨了。
所以就需要引入一种流量控制的手段:让发送方不要发送太快,既让接收方能够顺利接收数据,而且也不会造成网络链路的阻塞。
使用滑动窗口协议实现流量控制。防止发送方发送速率太快,接收方缓存区不够导致溢出。接收方会维护一个接收窗口 receiver
window(窗口大小单位是字节),接受窗口的大小是根据自己的资源情况动态调整的,在返回ACK时将接受窗口大小放在TCP报文中的窗口字段告知发送方。发送窗口的大小不能超过接受窗口的大小,只有当发送方发送并收到确认之后,才能将发送窗口右移。
发送窗口的上限为接受窗口和拥塞窗口中的较小值。接受窗口表明了接收方的接收能力,拥塞窗口表明了网络的传送能力。
什么是零窗口(接收窗口为0时会怎样)
如果接收方没有能力接收数据,就会将接收窗口设置为0,这时发送方必须暂停发送数据,但是会启动一个持续计时器(persistence timer)
,到期后发送一个大小为1字节的探测数据包,以查看接收窗口状态。如果接收方能够接收数据,就会在返回的报文中更新接收窗口大小,恢复数据传送。
TCP的拥塞控制是怎么实现的

拥塞控制主要由四个算法组成:慢启动(Slow Start)、拥塞避免(Congestion voidance)、快重传 (Fast Retransmit)、**快恢复
**(Fast Recovery)
总结:一开始使用慢开始算法,cwnd为1,让拥塞窗口cwnd的值按照指数规律增长
,当cwnd增长ssthresh值时,转而执行拥塞避免算法,cwnd按照线性规律增长,当发生超时重传时,ssthresh更新为发生拥塞时的一半,cwnd变为1,重新开始慢开始算法.收到三个重复确认时执行快重传和快恢复(
ssthresh降为一半,并将cwnd变为ssthresh,执行拥塞避免算法,cwnd线性+1)
慢启动:刚开始发送数据时,先把拥塞窗口(congestion
window)设置为一个最大报文段MSS的数值,每收到一个新的确认报文之后,就把拥塞窗口加1个MSS。这样每经过一个传输轮次(或者说是每经过一个往返时间RTT),拥塞窗口的大小就会加倍。拥塞避免:当拥塞窗口的大小达到慢开始门限(slow start threshold)时,开始执行拥塞避免算法,拥塞窗口大小不再指数增加,而是线性增加,即每经过一个传输轮次只增加1MSS。
无论在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞(其根据就是没有收到确认),就要把慢开始门限ssthresh设置为出现拥塞时的发送方窗口值的一半(但不能小于2)。然后把拥塞窗口cwnd重新设置为1,执行慢开始算法。(这是不使用快重传的情况)
快重传:快重传要求接收方在收到一个失序的报文段后就立即发出重复确认(为的是使发送方及早知道有报文段没有到达对方)而不要等到自己发送数据时捎带确认。快重传算法规定,发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段,而不必继续等待设置的重传计时器时间到期。

- 快恢复:当发送方连续收到三个重复确认时,就把慢开始门限减半,然后执行拥塞避免算法。不执行慢开始算法的原因:因为如果网络出现拥塞的话就不会收到好几个重复的确认,所以发送方认为现在网络可能没有出现拥塞。
也有的快重传是把开始时的拥塞窗口cwnd值再增大一点,即等于 ssthresh + 3*MSS
。这样做的理由是:既然发送方收到三个重复的确认,就表明有三个分组已经离开了网络。这三个分组不再消耗网络的资源而是停留在接收方的缓存中。可见现在网络中减少了三个分组。因此可以适当把拥塞窗口扩大些。
TCP与UDP的区别
- TCP是面向连接的,UDP是无连接的;
无连接:UDP发送数据之前不需要建立连接
- TCP是可靠的,UDP不可靠;
不可靠:UDP接收方收到报文后,不需要给出任何确认
- TCP只支持点对点通信,UDP支持一对一、一对多、多对一、多对多;
- TCP是面向字节流的,UDP是面向报文的;
解释:面向字节流是指发送数据时以字节为单位,一个数据包可以拆分成若干组进行发送,而UDP一个报文只能一次发完。
- TCP有拥塞控制机制,UDP没有。网络出现的拥塞不会使源主机的发送速率降低,这对某些实时应用是很重要的,比如媒体通信,游戏;
- TCP首部开销(20字节)比UDP首部开销(8字节)要大
- UDP 的主机不需要维持复杂的连接状态表
什么时候选择TCP,什么时候选UDP?
对某些实时性要求比较高的情况,选择UDP,比如游戏,媒体通信,实时视频流(直播),即使出现传输错误也可以容忍;其它大部分情况下,HTTP都是用TCP,因为要求传输的内容可靠,不出现丢失
常见面试、视频会议: UDP+应用层可靠协议:谷歌RUDP(QUIC)
常见直播:UDP(速度快、不需要保证可靠性)
HTTP可以使用UDP吗?
HTTP不可以使用UDP,HTTP需要基于可靠的传输协议,而UDP不可靠
面向连接和无连接的区别
无连接的网络服务(数据报服务)– 面向连接的网络服务(虚电路服务)
虚电路服务:首先建立连接,所有的数据包经过相同的路径,服务质量有较好的保证;
数据报服务:每个数据包含目的地址,数据路由相互独立(路径可能变化);网络尽最大努力交付数据,但不保证不丢失、不保证先后顺序、不保证在时限内交付;网络发生拥塞时,可能会将一些分组丢弃;
TCP如何保证传输的可靠性
- 数据包校验
- 对失序数据包重新排序(TCP报文具有序列号)
- 丢弃重复数据
- 应答机制:接收方收到数据之后,会发送一个确认(通常延迟几分之一秒);
- 超时重发:发送方发出数据之后,启动一个定时器,超时未收到接收方的确认,则重新发送这个数据;
- 流量控制:确保接收端能够接收发送方的数据而不会缓冲区溢出
客户端不断进行请求链接会怎样?DDos(Distributed Denial of Service)攻击?
服务器端会为每个请求创建一个链接,并向其发送确认报文,然后等待客户端进行确认。
- DDos攻击
- 客户端向服务端发送请求链接数据包
- 服务端向客户端发送确认数据包
- 客户端不向服务端发送确认数据包,服务器一直等待来自客户端的确认
- DDos预防 ( 没有彻底根治的办法,除非不使用TCP )
- 限制同时打开SYN半链接的数目
- 缩短SYN半链接的Time out 时间
- 关闭不必要的服务
TCP粘包现象原因和解决方法
tcp粘包就是指在tcp的网络编程(当然不止tcp,其他粘包也差不多意思)
中,由于tcp是流式的,tcp提供给应用层的接口,无法获知发送端一次发了多少数据,也没办法获知发送端发了多少数据,就造成下一次数据头紧跟着上上一次数据尾,直接提供给应用层,应用层无法感知何处是发送端一次发送的边界。
是发送端tcp层可能会对数据封装成多个tcp段,不仅如此,还会对应用层的多次数据组成一个包,比如应用层第一次写’A’,第二次写’B’
,第三次写’C’,在Tcp层很可能是发送一个tcp段,包含的数据是’ABC’
,所以,这样不管是接收端是否一次读一个tcp段,都无法分辨出哪里是发送端应用层边界,俗称”粘包”。
解决办法:
- 确保接收方会及时处理发送来的数据,使输入缓冲区中同时只会存在一条发送来的数据;
- 保证发送端的数据中有分隔符或能够标识其长度的字段( 如 HTTP 消息 )。
代理
代理:代理其实就是一个中介,A和B本来可以直接连接,中间插入C,C就是代理;刚开始代理多是帮助内网client访问外网服务器用的,后来出现反向代理;
反向代理:反向就是方向相反,即代理来自外网的客户端请求转发到内网服务器,由外到内。
代理服务器来接收来自internet上的链接请求,然后将请求转发给内网的服务器,并将从服务器上得到的结果返回给internet上请求链接的客户端,此时代理服务器对外表现就是一个服务器。
用途:
- 保证内网的安全,阻止Web攻击,大型网站经常将反向代理作为公网访问地址,Web服务器是内网。
- 负载均衡,通过反向代理来优化网站的负载
正向代理:正向代理类似于一个跳板机,代理访问外部资源。比如国内访问Google可以通过一个正向代理服务器,请求转发到代理服务器,代理服务器能够访问Google,这样由代理去谷歌取到返回数据,再返回给我们,这样我们就能访问Google了。
用途:
- 访问原来无法访问的资源,如google
- 可以做缓存,加速资源访问
- 对客户端访问授权,上网进行认证
- 代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息
HTTP和HTTPS
HTTP和HTTPS有什么区别
- 端口不同:HTTP使用的是80端口,HTTPS使用443端口;
- HTTP(超文本传输协议)信息是明文传输,HTTPS运行在SSL(Secure Socket Layer)之上,添加了加密和认证机制,更加安全;
- HTTPS由于加密解密会带来更大的CPU和内存开销;
- HTTPS通信需要证书,一般需要向证书颁发机构(CA)购买
Https的连接过程
- 浏览器对服务器的443端口发起请求,请求携带了浏览器支持的加密算法和哈希算法
- 服务器收到请求,选择浏览器支持的加密算法和哈希算法
- 服务器将数字证书返回给浏览器(服务器的域名、颁发者名称、证书签名、过期时间)
- 浏览器进入证书认证环节:证书是否过期,CA是否可靠,发行者证书的公钥能否能正确揭开服务器证书的“发行者的数字签名”,证书上的域名是否和实际域名匹配。
- 如果证书受信任,浏览器会生成一个随机秘钥A,使用hash对握手消息进行摘要计算得到B,使用A对摘要B进行加密得到C,并用服务器提供的公钥对随机秘钥A进行加密得到D,将加密后的随机秘钥D和加密后的摘要C一块发送给服务器。
- 服务器使用自己的私钥解密D,得到随机秘钥A,使用随机秘钥A解密加密后的摘要C,并验证握手消息是否一致,如果一致,则服务器使用随机秘钥A加密握手消息给浏览器
- 浏览器解密验证并验证摘要,如果一致则握手结束,以后每次通信都是用这个加密算法。
HTTP/2.0有哪些新增的特点
- 二进制协议:http2.0协议整个都是二进制数据,协议头和数据体都是二进制协议。协议头和数据体,都被称为“帧”(frame):头信息帧和数据帧。
- 多工:多路复用允许多送多条响应消息
- HTTP2支持服务器推送
- 头信息压缩机制,提高速度
HTTP的长连接和短连接
HTTP的短连接是指:浏览器和服务器每进行一次HTTP操作就建立一次连接,结束就释放连接。
HTTP的长连接是指:当一个网页打开后,浏览器与服务器用于传输的HTTP信息的TCP连接通道不会关闭,当浏览器与服务器再次进行连接会继续使用这个连接,keep-alive不会永久保持连接,会维持一段时间,可以在不同的服务器软件中进行设置。
http请求报文的格式
请求行,请求头,空行,和请求体
请求行
- 方法字段 , URL字段 , HTTP协议版本字段 3部分组成,使用空格隔开.
- 请求方法: GET ,POST,PUT,DELETE,options
请求头:
- 请求头由关键字/值对组成,每行一堆,关键字和值用冒号分割,请求头部分通知服务器有关于客户请求信息
- User-Agent : 产生请求的浏览器的类型
- Accept : 客户端可识别的响应内容类型列表; “* “用于按照范围类型分组,用”/“指示可以接收全部类型,用”type/*”表
- 示可以接受type类型的所有子类型;
- Accept-Language :客户端可以接受的自然语言;
- Accept-Encoding :客户端可以接受的编码压缩格式; gizp
- Host :请求的主机名,允许多个域名同处于一个IP地址,即虚拟主机;
- Connection : close 或keepalive
- Cookie : 保存一些信息,在每次客户端请求的时候,携带Cookie
空行:
- 最后一个请求头之后是一个空行,发送回车符合换行符,通知服务器,以下不再有请求头;
请求体:
- 请求体不在Get方法中使用,在POST中使用,POST填写表单,
- 包体类型:Content-type
- 包体长度:Content-length
HTTP响应报文的格式
HTTP响应报文:状态行,响应头部,空行,响应包体

状态行:
- 1xx : 表示服务器已经接受了客户端的请求,客户端可以继续发送请求
- 2xx: 200 成功, 201已创建
- 3xx : 301永久重定向 302 暂时重定向 304 访问缓存,303临时重定向,307 临时重定向(不改变请求方法)
- 4xx: 客户端错误 400 请求语法错误,401,未授权,403收到请求拒绝提供服务网,404 资源不存在,客户端499请求超时
- 5xx: 500服务器错误,502网关错误, 503 服务不可用,504网关超时,505 http版本不支持
响应头部:
- Location
- Conction-Type:image/gif, text/plain , application/json ,text/html ,application/x-javascript
- Conection-Length: 45 长度
- Conection:close ,keep-alive
- Date:时间
- Server:服务器处理软件(Nginx)
- Vary: 表示不可缓存的请求头列表
Authorization:服务器要验证相关
空行:最后一个响应头部之后是一个空行,发送回车符和换行符,通知服务器以下不再有响应头部。
浏览器调整HTTP怎么变成HTTPS
一种是原始的302跳转,服务器把所有的HTTp流量跳转到HTTPS。但这样有一个漏洞,就是中间人可能在第一次访问站点的时候就劫持。
解决方法是引入HSTS机制,用户浏览器在访问站点的时候强制使用HTTPS。
什么是对称加密、非对称加密?
- 对称加密:加密和解密采用相同的密钥。如:DES、RC2、RC4
- 非对称加密:需要两个密钥:公钥和私钥。如果用公钥加密,需要用私钥才能解密。如:RSA
- 区别:对称加密速度更快,通常用于大量数据的加密;非对称加密安全性更高(不需要传送私钥)
数字签名、报文摘要的原理
- 发送者A用私钥进行签名,接收者B用公钥验证签名。因为除A外没有人有私钥,所以B相信签名是来自A。A不可抵赖,B也不能伪造报文。
- 摘要算法:MD5、SHA
总结:非对称加密算法用于在握手过程中加密生成的密码;对称加密算法用于对真正传输的数据进行加密;HASH算法用于验证数据的完整性。
RSA数字签名过程
对外发布公钥,并声明私钥在自己手中
对消息M进行计算摘要(MD5、SHA-256)得到摘到D
小明使用私钥对D进行签名,得到签名S
将M和S一起发送出去
验证过程:
接受者收到M和S,使用公钥对签名S进行解密,得到D1
接受者再对M(消息)使用一样的摘要算法计算摘要,得到D2
如果D2和D1相同,那么证明M的确是小明发出的,并且未被篡改。
因为公钥在传输过程中有可能会被替换,因此需要一个第三方可信机构提供一个公钥,因此就有了数字证书,即公钥需要申请,并绑定到数字证书上。
GET与POST的区别
- GET是幂等的,即读取同一个资源,总是得到相同的数据,POST不是幂等的;
- GET一般用于从服务器获取资源,而POST有可能改变服务器上的资源; 请求形式上:GET请求的数据附在URL之后,在HTTP请求头中;POST请求的数据在请求体中;
- 安全性:GET请求可被缓存、收藏、保留到历史记录,且其请求数据明文出现在URL中。POST的参数不会被保存,安全性相对较高;
- GET只允许ASCII字符,POST对数据类型没有要求,也允许二进制数据;
- GET的长度有限制(操作系统或者浏览器),而POST数据大小无限制
Session与Cookie的区别
Session是服务器端保持状态的方案,Cookie是客户端保持状态的方案
Cookie保存在客户端本地,客户端请求服务器时会将Cookie一起提交;Session保存在服务端,通过检索Sessionid查看状态。服务端根据sessionid去session里获取信息,查找该客户端是否存在,若不存在会把此时的sessionid存进session里,以便下一次客户端发送请求,做相应的操作。
保存Session id的方式可以采用Cookie,如果禁用了Cookie,可以使用URL重写机制(把会话ID保存在URL中)。
从输入网址到获得页面的过程 (越详细越好)?
https://blog.csdn.net/qq_36520235/article/details/82559847
- 浏览器查询 DNS,获取域名对应的IP地址:
具体过程包括浏览器搜索自身的DNS缓存、搜索操作系统的DNS缓存、读取本地的Host文件和向本地DNS服务器进行查询等。对于向本地DNS服务器进行查询,如果要查询的域名包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析(
此解析具有权威性)
;如果要查询的域名不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析(此解析不具有权威性)。如果本地域名服务器并未缓存该网址映射关系,那么将根据其设置发起递归查询或者迭代查询; - 浏览器获得域名对应的IP地址以后,浏览器向服务器请求建立链接,发起三次握手;
- TCP/IP链接建立起来后,浏览器向服务器发送HTTP请求;
- 服务器接收到这个请求,并根据路径参数映射到特定的请求处理器进行处理,并将处理结果及相应的视图返回给浏览器;
- 浏览器解析并渲染视图,若遇到对js文件、css文件及图片等静态资源的引用,则重复上述步骤并向服务器请求这些资源;
- 浏览器根据其请求到的资源、数据渲染页面,最终向用户呈现一个完整的页面。
计算机网络体系结构

原理体系结构
- 物理层
参考模型的最低层,也是OSI模型的第一层,实现了相邻计算机节点之间比特流的透明传送,并尽可能地屏蔽掉具体传输介质和物理设备的差异,使其上层(
数据链路层)不必关心网络的具体传输介质。 - 数据链路层(data link layer)
接收来自物理层的位流形式的数据,并封装成帧,传送到上一层;同样,也将来自上层的数据帧,拆装为位流形式的数据转发到物理层。这一层在物理层提供的比特流的基础上,通过差错控制、流量控制方法,使有差错的物理线路变为无差错的数据链路,即提供可靠的通过物理介质传输数据的方法。 - 网络层
将网络地址翻译成对应的物理地址,并通过路由选择算法为分组通过通信子网选择最适当的路径。(IP网际互联协议、ARP地址解析协议、NAT网络地址转换、RIP路由信息协议。。。)(
Protocol) - 传输层
在源端与目的端之间提供可靠的透明数据传输,使上层服务用户不必关系通信子网的实现细节。在协议栈中,传输层位于网络层之上,传输层协议为不同主机上运行的进程提供逻辑通信,而网络层协议为不同主机提供逻辑通信。(TCP/UDP)
OSI模型
- 物理层: RJ45、CLOCK、IEEE802.3 (中继器,集线器)
- 数据链路:PPP、FR、HDLC、VLAN、MAC (网桥,交换机)
- 网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP、 (路由器)
- 传输层:TCP、UDP、SPX
- 会话层:NFS、SQL、NETBIOS、RPC
- 表示层:JPEG、MPEG、ASII
- 应用层:FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS
应用层:常见协议:
- FTP(21端口):文件传输协议
- SSH(22端口):远程登陆
- TELNET(23端口):远程登录
- SMTP(25端口):发送邮件
- POP3(110端口):接收邮件
- HTTP(80端口):超文本传输协议
- DNS(53端口):运行在UDP上,域名解析服务
路由器、交换机位于哪一层?
- 路由器:网络层,根据IP地址进行寻址;
- 交换机:数据链路层,根据MAC地址进行寻址
IP地址的分类

路由器仅根据网络号net-id来转发分组,当分组到达目的网络的路由器之后,再按照主机号host-id将分组交付给主机;同一网络上的所有主机的网络号相同。
什么叫划分子网
从主机号host-id借用若干个比特作为子
网号subnet-id;子网掩码:网络号和子网号都为1,主机号为0;数据报仍然先按照网络号找到目的网络,发送到路由器,路由器再按照网络号和子网号找到目的子网:将子网掩码与目标地址逐比特与操作,若结果为某个子网的网络地址,则送到该子网。
什么是RIP (Routing Information Protocol, 距离矢量路由协议)
每个路由器维护一张表,记录该路由器到其它网络的”跳数“,路由器到与其直接连接的网络的跳数是1,每多经过一个路由器跳数就加1;更新该表时和相邻路由器交换路由信息;路由器允许一个路径最多包含15个路由器,如果跳数为16,则不可达。交付数据报时优先选取距离最短的路径。
优缺点
实现简单,开销小
随着网络规模扩大开销也会增大;
最大距离为15,限制了网络的规模;
当网络出现故障时,要经过较长的时间才能将此信息传递到所有路由器
什么是ARP协议 (Address Resolution Protocol)
ARP协议完成了IP地址与物理地址的映射。每一个主机都设有一个 ARP 高速缓存,里面有所在的局域网上的各主机和路由器的 IP
地址到硬件地址的映射表。当源主机要发送数据包到目的主机时,会先检查自己的ARP高速缓存中有没有目的主机的MAC地址,如果有,就直接将数据包发到这个MAC地址,如果没有,就向
所在的局域网发起一个ARP请求的广播包(在发送自己的 ARP 请求时,同时会带上自己的 IP
地址到硬件地址的映射),收到请求的主机检查自己的IP地址和目的主机的IP地址是否一致,如果一致,则先保存源主机的映射到自己的ARP缓存,然后给源主机发送一个ARP响应数据包。源主机收到响应数据包之后,先添加目的主机的IP地址与MAC地址的映射,再进行数据传送。如果源主机一直没有收到响应,表示ARP查询失败。
如果所要找的主机和源主机不在同一个局域网上,那么就要通过 ARP
找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。
什么是NAT (Network Address Translation, 网络地址转换)
用于解决内网中的主机要和因特网上的主机通信。由NAT路由器将主机的本地IP地址转换为全球IP地址,分为静态转换(转换得到的全球IP地址固定不变)和动态NAT转换。
什么是ICMP(Internet控制报文协议)
它是TCP/IP协议簇
的一个子协议,用于在IP主机、路由
器之间传递控制消息。控制消息是指网络通
不通、主机
是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用
DNS
当DNS客户机需要在程序中使用名称时,它会查询DNS服务器来解析该名称。客户机发送的每条查询信息包括三条信息:包括:指定的DNS域名,指定的查询类型,DNS域名的指定类别。基于UDP服务,端口53.
该应用一般不直接为用户使用,而是为其他应用服务,如HTTP,SMTP等在其中需要完成主机名到IP地址的转换