常见网络协议

分层模型

ISO模型:

物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

TCP/IP模型:

网络接口层(物理+链路)、网际层、传输层、应用层

常用端口号

ftp:21,telnet:23,smtp:25,dns:53,tftp:69,http:80,snmp:161

路由算法

静态路由算法:管理员手工配置,适用于小型网络。

路由算法通常指动态路由算法。

距离-向量路由算法

每个路由节点对其目前已知的其他节点持有自己到该节点的已知最短距离信息,节点会将自己已知的信息全部发送给相邻节点,同时接收来自相邻节点的信息,由此得到自己不知道的节点,并更新自己所知道的最短距离。这个过程可能需要很多轮,且单个报文携带的信息量太大,故不适用于过于大型网络。且更易遇到路由环路问题。

该算法典型的协议有RIP协议。

链路状态路由算法

每个节点最终都需持有完整的网络拓扑信息,但不需要交换如此大量的信息,只需监控与自己相邻的链路状态并将其发送给所有节点即可,发送使用泛洪法。节点收到其他所有节点信息后,相当于得到了一张图的所有边,于是便能构建出完整的拓扑结构。并通过最短路径算法确定自己到每个节点的最短路径(保存下一跳即可)。

该算法典型的协议有OSPF协议

BGP协议

bgp(边界网关协议)用于在不同自治系统(AS)间交换路由信息。各个as需要选择发言人来做代表参与bgp协议交换。当交换完成后,各发言人即能得知到达某个目标网络可以经过哪些as,从而选择相对较好的路径。

IP协议

IPv4协议是现在使用最普遍的网络层协议。ip数据报的格式如下:

首部至少有20个Byte。

IP数据报的总长度最大为65535字节,但实际要受到以太网MTU的限制,即1500字节。

数据太长时则需分片,通过统一的标识来识别。分片以8字节为单位,以片偏移确定分片在原数据中的位置。

生存时间指最大允许经过的路由器数,每个路由器在转发前都会减一,剩下的结果为0则不转发。

ipv4地址

ipv4地址由32个bit位组成

A类:1~126

B类:128~191

C类:192~223

D类:224~239(多播地址)

E类:240~255(保留)

特殊:127(环回地址)

ipv4地址分为网络号和主机号。主机号全为0代表本网络地址,主机号全为1表示本网络广播地址。

私有地址:由于网络地址的不足,即局域网隔离的需求,特别分配了一些地址表示私有地址,这些地址的数据不会被转发到公网。

A类:10

B类:172.16~172.31

C类:192.168.0~192.168.255

子网掩码,CIDR

CIDR即无分类域间路由选择,是一种消除传统ABC类划分方式的划分方法。

为了得到一台主机所处网络的地址,需将其主机地址与子网掩码按位与。

其实就是取主机地址的前多少位,取前8位,则子网掩码的前8位为1,后24位为0。

斜线记法就是记的掩码1的位数。

NAT(网络地址转换)

NAT不是网络层的协议,是一类软件,可以认为工作在传输层,因为它需要查看端口号。

NAT是指将专用网络地址转换为公用网络地址。NAT通过路由器安装的NAT软件实现。

NAT软件会维护一张NAT转换表,记录本地ip端口与路由器IP端口的映射。

WAN端

LAN端

135.21.2.3 , 5001

192.168.2.123, 1002

135.21.2.3 , 5002

192.168.2.123, 1004

135.21.2.3 , 5003

192.168.2.144, 8877

转发过程

路由器的路由表至少记录以下两个信息

{目的网络地址,下一跳地址}

当IP报中目的网络地址是本路由所在LAN地址时,才向目标主机直接交付。否则会经过多次间接交付,即转发给其他路由器。

匹配目的网络地址时,按最长前缀匹配,即能匹配的位数最多的那个。

ARP

ARP(地址解析协议),是为了完成同一个局域网中主机IP地址到MAC地址的映射。有mac地址才能组MAC帧。

ARP工作在网络层,每台主机维护一张ARP表,记录IP与mac地址的映射,如果当前IP地址的映射不存在,则通过mac地址全为1来广播ARP请求,对应主机会响应其地址映射,其余主机不做处理。

当目标IP地址不在本局域网时,则要找路由器的mac地址,将IP报文发送给路由器,通过路由器发送到目标网络,再在目标网络完成转换。

DHCP

dhcp(动态主机配置协议)用于动态的给主机分配地址,这种方式提供了即插即用的联网机制,避免频繁手工配置。dhcp基于UDP协议,它是一个应用层的协议。不基于TCP是因为不知道对方IP,无法建立连接。

dhcp基于客户/服务器模式。需要得到IP的主机向DHCP服务器广播发现报文,所有主机都能收到,只有dhcp服务器才会应答,dhcp服务器会先使用之前的配置,没有时再重新分配一个,通过提供报文广播回复客户。客户收到服务器提供的地址后,如果接受,则正式请求该地址,广播请求报文,服务器再广播回复确认报文

ICMP

icmp(网际报文控制协议)是网络层协议,用于报告差错和异常情况。常用的ping就是工作在应用层而直接基于icmp协议

ICMP分为差错报告报文询问报文

TCP协议

tcp是传输层协议,它面向连接,向应用层提供一条全双工的可靠逻辑信道,不提供广播或组播。

tcp的成本高于udp,适用于可靠性要求较高的场合,基于tcp的应用层协议常见的有http,ftp,telnet等。

tcp的数据面向字节流

tcp报文段格式

序号:本报文段的首字节的序号,在连接建立时会序号从一个随机值开始,根据已发送的字节数递增。

确认号:期望收到的下一个报文序号

数据偏移:数据部分的起点离报文起点有多远,也即首部长度,单位为4字节,由于只有4位,故能表示的最大长度为60字节。

窗口:允许对方发送的数据量,缓存大小是有限的,不能无限制的接收数据。

ack:ack=1时,确认号字段有效,建立连接后必须为1。

syn:syn=1时,表示这是一个用来请求连接的报文。

fin:fin=1时,表示当前这段报文的发送方已经发送完毕,期望释放连接。

连接管理

建立连接(三次握手)

服务端指在端口上监听的一方,客户端指请求连接该端口的一方。

第一次:客户端发起连接请求,SYN=1,ACK=0,序号=随机x。发送后进入SYN-SENT状态。

第二次:服务端收到连接请求后,如果同意,则分配资源并回复报文,SYN=1,ACK=1,序号=随机y,确认号=x+1。回复后进入SYN-RCVD状态。

第三次:客户端收到确认报文后,分配资源并向服务端回复确认,SYN=0,ACK=1,序号=x+1,确认号=y+1。这次报文可以携带数据,若不携带,则下次序号仍是x+1。发送后客户端进入ESTABLISHED状态。

释放连接(四次握手)

第一次:客户端不再需要发送数据了,便发送连接释放报文段,FIN=1,序号+1=u,然后进入FIN-WAIT1状态。

第二次:服务端收到连接释放报文后,回复确认收到,ACK=1,序号+1=v,确认号=u+1。此时客户端到服务端的连接被释放。服务器进入CLOSE-WAIT状态,等待服务端剩余数据发送。

第三次:服务端发送完数据后,发送连接释放报文,FIN=1,ACK=1,序号+1=w,确认号=u+1。发送后进入LAST-ACK状态。

第四次:客户端回复确认,ACK=1,序号=u+1,确认号=w+1。服务端收到后进入closed状态。客户端则要在发送后等待2MSL(最长报文段寿命)后,进入CLOSED状态。

可靠传输

tcp的可靠传输保证接收方进程从缓存区读出的字节流于发送方发出的字节流完全一样。

tcp通过校验、序号、确认、重传等机制保证可靠传输。

序号:字节流中的每个字节都隐式的被编上了一个序号。

确认:确认号表示下一个期望收到的字节序号。确认号使用累积确认,保证确认号之前的数据都是一定已经接收了的。即不会间隔确认。

重传:有两种情况导致重传,一种是超时,即长时间收不到相应的确认号,超时时间略大于RTT(Round-Trip Time)。另一种是冗余ACK,即在某个报文段丢失时,收到后续报文后,以丢失报文段的确认号做应答,这样发送方就知道那个报文丢了,就会重发。

流量控制

tcp提供流量控制服务来消除发送方发送太快使得接收方缓存溢出的可能。

tcp协议基于滑动窗口实现流量控制。在控制过程中涉及两个窗口,一个是接收窗口rwnd,一个是拥塞窗口cwnd。发送窗口的实际大小为二者的最小值。

拥塞控制

拥塞控制是全局性的,是为了让网络能够承受现有的网络负荷。

拥塞控制有4种算法:慢开始、拥塞避免、快重传、快恢复。

慢开始初始时拥塞窗口值为1MSS,每成功发送一个报文则加1MSS。达到一个慢开始门限后,转而使用拥塞避免算法,每过一个RTT才加1MSS。

如果遇到阻塞则设置拥塞窗口值为1MSS,并将慢开始门限设为当前发生拥塞时的值的一半。

快重传:在连续收到三个重复的ACK报文时,直接重传对方尚未收到的报文段。

快恢复:当收到连续三个冗余ACK时,只需乘法减小,将门限设置为单前值的一半,并将拥塞窗口值设为此门限值。

在TCP连接建立和网络出现超时时,采用慢开始和拥塞避免算法;当发送方接收到冗余ACK时,采用快重传和快恢复算法。

DNS

FTP

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值