网络基础(CRC、NAT、URG、PSH、tcp定时器)

CRC

循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。
  CRC码是由两部分组成,前部分是信息码,就是需要校验的信息,后部分是校验码,如果CRC码共长n个bit,信息码长k个bit,就称为(n,k)码。它的编码规则是:
移位:将原信息码(kbit)左移r位(k+r=n)
相除:运用一个生成多项式g(x)(也可看成二进制数)用模2除上面的式子,得到的余数就是校验码。
例:
g(x)=x^4+x^3+x^2+1,(7,3)码,信息码110产生的CRC码就是:
对于g(x)=x^4+x^3+x^2+1的解释:(都是从右往左数)x4就是第五位是1,因为没有x1所以第2位就是0。
11101 | 110,0000(设a=11101 ,b=1100000)
用b除以a做模2运算得到余数:1001
余数是1001,所以CRC码是1001,传输码为:110,1001

NAT技术与代理服务器

NAT
  就是在局域网内部网络中使用内部地址,而当内部节点要与外部网络进行通讯时,就在网关(可以理解为出口,打个比方就像院子的门一样)处,将内部地址替换成公用地址,从而在外部公网(internet)上正常使用,NAT可以使多台计算机共享Internet连接,这一功能很好地解决了公共 IP地址紧缺的问题。通过这种方法,可以只申请一个合法IP地址,就把整个局域网中的计算机接入Internet中。这时,NAT屏蔽了内部网络,所有内部网计算机对于公共网络来说是不可见的,而内部网计算机用户通常不会意识到NAT的存在。
  NAT的基本工作原理是:当私有网主机和公共网主机通信的IP包经过NAT网关时,将IP包中的源IP或目的IP在私有IP和NAT的公共IP之间进行转换。
代理服务器(Proxy Server)
  其功能就是代理网络用户去取得网络信息。形象的说:它是网络信息的中转站。当客户端有因特网的数据要求时, Proxy 会帮用户去向目的地取得用户所需要的数据。更重要的是:Proxy Server(代理服务器)是Internet链路级网关所提供的一种重要的安全功能。
  当客户端在浏览器中设置好Proxy服务器后,所有使用浏览器访问internet站点的请求都不会直接发给目的主机,而是首先发送至代理服务器,代理服务器接收到客户端的请求以后,由代理服务器向目的主机发出请求,并接收目的主机返回的数据,存放在代理服务器的硬盘,然后再由代理服务器将客户端请求的数据转发给客户端。
常见代理服务器:

  • http代理 :
    www连接请求就是采用的http协议,所以我们在浏览网页,下载数据(也可采用ftp协议)时就是用http代理。它通常绑定在代理服务器的80、3128、8080等端口上。
  • socks代理 :
    Socks 不要求应用程序遵循特定的操作系统平台,Socks 代理与应用层代理、HTTP层代理不同,Socks 代理只是简单地传递数据包,而不必关心是何种应用协议(比如FTP、HTTP和NNTP请求)。所以,Socks代理比其他应用层代理要快得多。它通常绑定在代理服务器的1080端口上。
  • VPN代理 :
    指在共用网络上建立专用网络的技术。之所以称为虚拟网主要是因为整个VPN网络的任意两个结点之间的连接并没有传统专网建设所需的点到点的物理链路,而是架构在公用网络服务商ISP所提供的网络平台之上的逻辑网络。
  • 反向代理 :
    反向代理服务器架设在服务器端,通过缓冲经常被请求的页面来缓解服务器的工作量。
  • FTP代理 :
    能够代理客户机上的FTP软件访问FTP服务器。
  • RTSP代理 :
    代理客户机上的Realplayer访问Real流媒体服务器。
  • POP3代理 :
    代理客户机上的邮件软件用POP3方式收发邮件

NAT技术与代理服务器区别

  • 对客户端来说:
    NAT设置简单,无需客户端软件
    Proxy针对每一种应用设置代理服务器,或者安装一个客户端软件,设置相对复杂一些。并且并不一定支持所有的应用,如VPN客户端登录很多Proxy就无法代理应用.。
    对服务器来说:
  • Proxy需要耗用的资源更多一些(内存,硬盘等),以存CACHE内容,正因如此,在大量用户的情况下,获得的性能更高一些.。
    NAT方式相当于一个软路由器,在中小访问量的情况下,速度也不错,资源占用少,所以适用普遍使用。
URG与PSH两个tcp标志位的调研

URG标志位:
  URG(紧急位)是表示紧急指针是否有效,当URG为1的时候就表示紧急指针是有效的。紧急指针通常情况下是无效的,当设置为有效的时候就表示数据要优先处理。紧急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。
  TCP的紧急方式是发送端向另一端发送紧急数据的一种方式,紧急指针指向的是包内数据段的某个字节(数据从第一字节到指针所指字节就是紧急数据),紧急数据是不进入缓冲区的直接交给上层进程的(一般情况下TCP是要等到整个缓存都满了再向上交付的)。
PSH标志位:
  PSH标志是为了提示接收端的应用程序应该立即从TCP的接收缓冲区中拿走数据,为了接收后续的数据来腾出空间(如果应用程序不将接收到的数据拿走的话,它们就会一直都留在TCP的接收缓冲区中) 。
  PSH(急迫位)当PSH为1的时候,客户端发给服务器的报文段立即被服务器TCP交付给应用程序来处理,而不用等整个缓存都填满再向上交付。一般情况下,TCP是等缓冲区写满再向上交付的,当PSH为1的时候数据还是要进入缓存区向上提交的,只不过不用等缓冲区满后才提交。这里所说的数据包括与此PUSH包一起传输的数据以及之前就为该进程传输过来的数据(滞留在缓存中的数据)。
URG与PSH的区别:

  • 发送方URG有效的时候,发送的数据不用进入缓冲区而直接交付给上一层;
  • 发送方PSH有效的时候,接收方收到后,发送的数据要进入缓冲区但不用等缓冲区满就交给上一层。
  • URG是针对发送方发送紧急数据的,PSH是针对接收方,接收方尽快将数据向上层交付。
tcp定时器

TCP使用四种定时器(Timer,也称为“计时器”):

  • 重传计时器:Retransmission Timer
  • 坚持计时器:Persistent Timer
  • 保活计时器:Keeplive Timer
  • 时间等待计时器:Time_Wait Timer。

重传计时器:
  重传定时器:为了控制丢失的报文段或丢弃的报文段,也就是对报文段确认的等待时间。当TCP发送报文段时,就创建这个特定报文段的重传计时器,可能发生两种情况:若在计时器超时之前收到对报文段的确认,则撤销计时器;若在收到对特定报文段的确认之前计时器超时,则重传该报文,并把计时器复位;
  重传时间=2*RTT;
  RTT的值应该动态计算。常用的公式是:RTT=previous RTT*i + (1-i)*current RTT。i的值通常取90%,即新的RTT是以前的RTT值的90%加上当前RTT值的10%.
Karn算法:对重传报文,在计算新的RTT时,不考虑重传报文的RTT。因为无法推理出:发送端所收到的确认是对上一次报文段的确认还是对重传报文段的确认。干脆不计入。
(2)坚持计时器:persistent timer
  专门为对付零窗口通知而设立的。
  当发送端收到零窗口的确认时,就启动坚持计时器,当坚持计时器截止期到时,发送端TCP就发送一个特殊的报文段,叫探测报文段,这个报文段只有一个字节的数据。探测报文段有序号,但序号永远不需要确认,甚至在计算对其他部分数据的确认时这个序号也被忽略。探测报文段提醒接收端TCP,确认已丢失,必须重传。
  坚持计时器的截止期设置为重传时间的值,但若没有收到从接收端来的响应,则发送另一个探测报文段,并将坚持计时器的值加倍和并复位,发送端继续发送探测报文段,将坚持计时器的值加倍和复位,知道这个值增大到阈值为止(通常为60秒)。之后,发送端每隔60s就发送一个报文段,直到窗口重新打开为止;
(3)保活计时器:keeplive timer
  每当服务器收到客户的信息,就将keeplive timer复位,超时通常设置2小时,若服务器超过2小时还没有收到来自客户的信息,就发送探测报文段,若发送了10个探测报文段(没75秒发送一个)还没收到响应,则终止连接。
(4)时间等待计时器:Time_Wait Timer
  在连接终止期使用,当TCP关闭连接时,并不认为这个连接就真正关闭了,在时间等待期间,连接还处于一种中间过度状态。这样就可以时重复的fin报文段在到达终点后被丢弃,这个计时器的值通常设置为一格报文段寿命期望值的两倍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值