计算机网络部分知识

一.传输层的TCP和UDP
1.UDP:
①UDP无需建立连接,是无连接的传输层协议。
②UDP分组首部开销小,只占8字节
这里写图片描述
③UDP不保证可靠交付
④UDP校验时会加入12B的伪首部
这里写图片描述
,使用二进制反码运算求和再取反来计算。这样即检查了UDP数据报,又对IP数据报的源IP地址和目的IP地址进行了校验。
2.TCP
①TCP时面向连接的传输层协议。
②TCP连接只能是点对点的。
③TCP提供可靠的交付服务,保证传输的数据无差错,不丢失,不重复且有序。
④TCP的通信是全双工的,双方都有接收缓存和发送缓存。
⑤TCP是面向字节流的。

TCP建立的三次握手:
这里写图片描述
注意竖列的那些状态,establised什么时候开始啊之类的也要记一下。图上对这个三次握手包首部信息不大全,计算机网络书上是这样写的:
客户端 …………………………………………服务端
————-SYN=1,seq=x—————–> (第一次握手)
<—-SYN=1,ACK=1,seq=y,ack=x+1—- (第二次握手)
——-ACK=1,seq=x+1,ack=y+1——-> (第三次握手)

这里面的SYN是同步位,表示这是一个连接请求或连接接收报文。发起连接的第一次和第二次握手这个SYN都要等于1;
seq:序号字段,表示当前发送的包的序号
ack:确认号字段,表示希望接收的下一个数据报的序号(同时也可以对接收到了上个数据包做确认)
ACK是确认位,只有当ACK=1时确认号字段才有效;

注意:服务器端的资源是在完成第二次握手时分配的,而客户端吧 资源是在完成第三次握手时分配的。这就使得服务器易于收到SYN泛红攻击(客户端伪造大量不存在的ip地址,向服务器不断的发送SYN包,伪造的ip地址,收不到服务器端发送的第二次握手的包(即无法发送第三次握手的包)。服务器端会不断重发直到超时。这些SYN包长时间占用服务器的未连接队列,导致正常的SYN请求因为队列满而被丢弃,从而引起网络堵塞甚至系统瘫痪)。这是一种Ddos攻击(攻击者使用一个偷窃帐号将DDoS主控程序安装在一个计算机上,在一个设定的时间主控程序将与大量代理程序通讯,代理程序已经被安装在网络上的许多计算机上。代理程序收到指令时就发动攻击)。具体什么是Ddos攻击还是去百度吧。

四次挥手
这里写图片描述
这里的四次回收关于报文描述也不太详细,课本上如下
客户端 …………………………………………服务端
————-FIN=1,seq=u—————–> (第一次挥手)
<——-ACK=1,seq=v,ack=u+1——– (第二次挥手)
<—-FIN=1,ACK=1,seq=w,ack=u+1—- (第三次挥手)
——-ACK=1,seq=u+1,ack=w+1——-> (第四次挥手)

对于挥手时,注意在第二次挥手时,客户机到服务器的连接就释放了,TCP连接处于半关闭状态。但服务器若发送数据,客户机仍需要接受,即从服务器到客户机这个方向的连接并未关闭。
对于在Time_Wait状态等在2MSL(最大报文寿命)时间的原因是:
a.保证服务器端发送的最后一个ACK报文能到达客户端
b.防止已失效的连接请求报文出现在本连接中。等待2msl时间可以使本次连接中的所有报文都在网络中消失。

二.滑动窗口协议
百度百科的概念:这个滑动窗口协议比较简单。
只有在接收窗口向前滑动时(与此同时也发送了确认),发送窗口才有可能向前滑动。
收发两端的窗口按照以上规律不断地向前滑动,因此这种协议又称为滑动窗口协议。
当发送窗口和接收窗口的大小都等于 1时,就是停止等待协议。
当发送窗口大于1,接收窗口等于1时,就是回退N步协议。
当发送窗口和接收窗口的大小均大于1时,就是选择重发协议。
协议中规定,对于窗口内未经确认的分组需要重传。这种分组的数量最多可以等于发送窗口的大小,即滑动窗口的大小n减去1(因为发送窗口不可能大于(n-1),起码接收窗口要大于等于1)。
注意在回退N帧和选择重传都是采用累积确认的方式。选择重传协议中接受缓冲区不是1,一般设置与发送缓冲区大小相同。是为了存储那些未按正确顺序接受的帧。
还得注意发送窗口的每个帧都有一个重传计时器,用来计时判断帧发送是否超时(超时的情况下就重发)。

三.TCP的拥塞控制
①慢开始算法:TCP刚刚连接时,开始发送TCP报文时,先令拥塞窗口=1;每收到一个队新的报文段的确认后,将拥塞窗口增加1(实际上的结果就会使拥塞窗口增加为上一次的两倍,1变成,2变成4)。就这样慢开始直至达到阈值,然后改用拥塞避免算法。
②拥塞避免算法:发送窗口每经过一个往返时延,就会增加一个MSS(最大报文段长度,即拥塞窗口+1,而不是翻倍),而当出现一次超时(网络拥塞)时,则令慢开始门限(即阈值)等于当前拥塞窗口的一半。
③网络拥塞的处理:
当出现网络拥塞时,无论在慢开始阶段还是在拥塞避免阶段,只要发送方检测到超时事件的发生(没有按时收到确认,重传计数器超时),就把阈值设置为拥塞窗口的一半,并重新开始慢开始算法。
快重传和快恢复:
快重传是指当发送方收到三个重复的ACK报文,就直接重传对方尚未收到的报文段(即ack所指报文)。
快恢复:当发送方连续收到三个重复的ACK,就执行乘法减小算法。把阈值设置为出现拥塞时发送方拥塞窗口的一半,并且把当前拥塞窗口设置为改变后的阈值,直接开始拥塞避免算法。(注意这种情况下,能收到重复的ACK,证明网络拥塞程度没有重传计数器超时的情况下严重,所以采用快恢复)

四.做笔试遇到了几个计算机网络的问题,现在整理一下:
MTU:最大传输单元,是指通信协议某一层上面所能通过的最大数据包大小(以字节为单位)。
路由器:路由器是网络层设备。具有多个输入输出端口,可以连接不用的网络(意思是指连接的网络可以采用不同的协议)并完成路由转发。在多尔衮逻辑网络(即多个广播域)互联时必须使用路由器。路由器也可以作为最基础的包过滤防火墙应用。
从结构上讲,路由器由路由选择和分组转发两部分组成。
路由器主要完成两个功能:一个是分组转发,一个是路由计算。
路由算法有ospf(链路状态路由算法的一种。原理是泛洪与自己直连的路由器和度量,每个路由其收到所有其它路由器的路由状态后通过Dijkstra算法选择如何转发数据包)和rip(距离向量路由算法的一种。向和它直连的路由器发送自己所知道的自己到别的路由器的所有的路由状态和度量)。

笔试里还涉及了ARP地址解析和ICMP,这个自己百度吧。注意icmp的traceroute:
Traceroute(windows上为tracert)程序可以让我们看到IP数据报从一台及其传到另一台主机所经过的路由。Traceroute程序使用ICMP报文和IP首部中的TTL字段(一般为64).TTL字段的目的是防止数据报在选路时候无休止的在网络中流动(当路由故障的时候,可能在两个路由循环)。当路由器收到一份IP数据报的时候,如果其TTL字段是0或1,则路由器不转发该数据报,路由器将该数据报丢弃,并给信源主机发送一份ICMP“超时”信息。
Tracerout的工作工程,它发送一份TTL字段为1的IP数据报给目的主机(为ICMP的请求回显Type为8),处理这份数据报的第一个路由器将TTL值减1,丢弃该数据报,并发回一份超时ICMP报文。这样就得到了该路径中的第一个路由器的地址。然后在发送一份TTL值为2的数据报,这样我们可以得到第二个路由器的地址。继续这个过程直到该数据报到达主机。目的主机如果接收到ICMP报文(这个时候不会发送ICMP“超时”差错报文),为了判断已经到达主机,这个时候在发送一份UDP数据报给主机,并且数据报的端口很大(应用程序不会占用),这个时候目的主机会产生一份“端口不可到达”的错误的ICMP报文。traceroute程序所要做的是区分接收到的ICMP报文是超时还是端口不可到达,以判断什么时候结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值