
下列关于FTP连接的叙述中正确的是___________
3,控制连接在整个过程中都是存在的,数据连接只在传输数据时存在,传输完毕就结束了。
IR是指什么插孔
IR接口是指BBU和RRU的接口。
用光纤。
IR口协议是指数据在BBU和RRU之间是数据纤中是怎输的,具体的传输格式(就是指数据是按照什么格式传的,一次传多少等等),具体协议可以在3GPP找到。
基本参数斯普莱 WFSV9602-52SND-WS-IR网络连接方式无线产品类型网络半球机网络摄像机性能520线,16灯红外,红外照射距离:12米,彩色1\\\/3 SONY 高解低照CCD网络协议TCP, UDP, IP, HTTP, FTP, SMTP, DHCP, DNS,ARP, ICMP, POP3, NTP, Ipsec, UpnP, RTP, RTCP无线网络-处理器-DRAM-Flash Memory-网管功能-图象压缩斯普莱 WFSV9602-52SND-WS-IR摄像头性能-图象分辨率PAL: 352x288(CIF),704x288(2CIF),704x576(D1)NTSC: 352x240(CIF),704x240(2CIF),704x480(D1)VGA: 640x480, QVGA: 320x240图象压缩速率PAL: 1~25 帧\\\/秒NTSC: 1~30帧\\\/秒帧\\\/秒图像压缩方式H.264图象压缩等级-显示尺寸-照明度0.5Lux 彩色视频丢失侦测-动态侦测-音频压缩标准-音频规格斯普莱 WFSV9602-52SND-WS-IR音频格式-音频比率-麦克风-输入输出斯普莱 WFSV9602-52SND-WS-IR网络接口RJ-45, \\\/100Mb自适应以太网接口,WIFI音频接口-视频接口-警报网络接口-其他接口-其他参数斯普莱 WFSV9602-52SND-WS-IR安全性-警报输入\\\/输出1通道on\\\/off 输入, 支持NO (常开) 或 NC (常闭),1通道on\\\/off 输出, 120VAC 1A\\\/24VDC 1A视频输入\\\/输出-Pan\\\/Tilt\\\/Zoom远程控制-信噪比-操作系统Microsoft Windows 98\\\/ME\\\/2000\\\/XP\\\/2003软件升级-电源规格DC12V 1A外观参数斯普莱 WFSV9602-52SND-WS-IRLED指示灯-尺寸-重量-安装方式-环境参数斯普莱 WFSV9602-52SND-WS-IR环境温度-10-55℃环境湿度10~85%
在命令行窗口中登录FTP 服务器时用户名正确,为什么密码输却入不进去
输入密码是没有显示的,但你的输入是有效的。
保证密码没输错,按回车就能登录上去了。
ftp的账号密码地址这些都是输正确了的,可就是连不上,为什么呀
协议要选对,如果对方服务器端口不是默认的,也要改成服务器一样的。
还有服务器地址最好用ip,填不对也连不上。
FANUC系统怎么用网线传输
不同的针数有不同的接法:如果是25针对9针的话接法如下:9针的2接25针的2、9针的3接25针的3、9针的5接25针的7、9针的1、4、6相接;9针的7、8相接;25针的4、5相接;25针的6、8、20相接;初次使用时要定义通信协议等重要参数记得。
1)串口通信电缆一般采用7芯或9芯屏蔽电缆,通信距离不要超过30M。
2)波特率:传输速度一般在110~1125000之间,通常使用4800或9600。
3)数据位:可在5~8之间选,一般采用7。
4)停止位:可以是1或2,一般采用2。
5)校验:可以为偶校验(EVEN)、可以是奇校验(ODD)或无校验(NONE)。
6)握手信号:可以为XON\\\/XOFF、CTS\\\/RTS。
注意:以上2-5的参数设置必需与数控系统参数的设置相同。
tcp协议通过什么来区分不同的连接
TCP\\\/IP不同的计算机系统,就好像语言不同的两个人互相见了面,完全不能交流信息。
因而他们需要定义一些共通的东西来进行交流,TCP\\\/IP就是为此而生。
TCP\\\/IP不是一个协议,而是一个协议族的统称。
里面包括了IP协议,IMCP协议,TCP协议,以及我们更加熟悉的http、ftp、pop3协议等等。
电脑有了这些,就好像学会了外语一样,就可以和其他的计算机终端做自由的交流了。
TCP\\\/IP 层次应用层(http、ftp、smtp) -->传输层(TCP、UDP)-->网络层(IP)-->域名系统 :域名系统是一个分布的数据库,它提供将主机名(就是网址啦)转换成的服务。
端口号(port): 注意,这个号码是用在TCP,UDP上的一个逻辑号码,并不是一个硬件端口,我们平时说把某某端口封掉了,也只是在IP层次把带有这个号码的IP包给过滤掉了而已。
应用编程接口:现在常用的编程接口有socket和TLI。
有三个目的:为IP模块发送和 接收IP数据报。
为ARP模块发送ARP请求和接收ARP应答。
为RARP发送RARP请 求和接收RARP应答ip大家都听说过。
至于ARP和RARP,ARP叫做,是用换MAC地址的一种协议,而RARP则叫做逆.--IP 、ARP 、RARP 协议三者都是在网络层 ,用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息。
数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数据信息。
IP 协议IP协议是的核心,所有的TCP,UDP,IMCP,IGCP的数据都以IP数据格式传输。
要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制--这被认为是上层协议:TCP或UDP要做的事情。
所以这也就出现了TCP是一个可靠的协议,而UDP就没有那么可靠的区别。
协议头八位的TTL字段,还记得这个字段是做什么的么
这个字段规定该数据包在穿过多少个路由之后才会被抛弃(这里就体现出来IP协议包的不可靠性,它不保证数据被送达),某个ip数据包每穿过一个,该数据包的TTL数值就会减少1,当该数据包的TTL成为零,它就会被自动抛弃。
这个字段的最大值也就是255,也就是说一个协议包也就在里面穿行255次就会被抛弃了,根据系统的不同,这个数字也不一样,一般是32或者是64,Tracerouter这个工具就是用这个原理工作的,tranceroute的-m选项要求最大值是255,也就是因为这个TTL在IP协议里面只有8bit。
现在的ip版本号是4,所以也称作IPv4。
现在还有IPv6,而且运用也越来越广泛了。
IP路由选择当一个IP数据包准备好了的时候,IP数据包(或者说是)是如何将数据包送到目的地的呢
它是怎么选择一个合适的路径来送货的呢
最特殊的情况是目的主机和主机直连,那么主机根本不用寻找路由,直接把数据传递过去就可以了。
至于是怎么直接传递的,这就要靠了。
稍微一般一点的情况是,主机通过若干个路由器(router)和目的主机连接。
那么路由器就要通过ip包的信息来为ip包寻找到一个合适的目标来进行传递,比如合适的主机,或者合适的路由。
路由器或者主机将会用如下的方式来处理某一个IP数据包如果IP数据包的TTL(生命周期)以到,则该IP数据包就被抛弃。
搜索路由表,优先搜索匹配主机,如果能找到和完全一致的目标主机,则将该包发向目标主机搜索路由表,如果匹配主机失败,则匹配同子网的路由器,这需要“(1.3.)”的协助。
如果找到路由器,则将该包发向路由器。
搜索路由表,如果匹配同子网路由器失败,则匹配同网号路由器,如果找到路由器,则将该包发向路由器。
搜索路由表,如果以上都失败了,就搜索默认路由,如果默认路由存在,则发包如果都失败了,就丢掉这个包这再一次证明了,ip包是不可靠的。
因为它不保证送达。
还记得数据链路层的以太网的协议中,每一个数据包都有一个MAC地址头么
我们知道每一块以太网卡都有一个MAC地址,这个地址是唯一的,那么IP包是如何知道这个MAC地址的
这就是ARP协议的工作。
ARP(地址解析)协议是一种解析协议,本来主机是完全不知道这个IP对应的是哪个主机的哪个接口,当主机要发送一个IP包的时候,会首先查一下自己的ARP高速缓存(就是一个IP-MAC地址对应表缓存),如果查询的IP-MAC值对不存在,那么主机就向网络发送一个ARP协议广播包,这个广播包里面就有待查询的IP地址,而直接收到这份广播的包的所有主机都会查询自己的IP地址,如果收到广播包的某一个主机发现自己符合条件,那么就准备好一个包含自己的MAC地址的ARP包传送给发送ARP广播的主机,而广播主机拿到ARP包后会更新自己的ARP缓存(就是存放IP-MAC对应表的地方)。
发送广播的主机就会用新的ARP缓存数据准备好数据链路层的的数据包发送工作。
arp -a 可以查询自己的arp缓存这样的高速缓存是有时限的,一般是20分钟(伯克利系统的衍生系统)。
--ICMP协议--UDP 协议UDP是传输层协议,和TCP协议处于一个分层中,但是与TCP协议不同,并不提供超时重传,出错重传等功能,也就是说其是不可靠的协议。
1 、UDP 的端口号由于很多软件需要用到,所以必须通过某个标志用以区分不同的程序所需要的数据包。
端口号的功能就在于此,例如某一个UDP程序A在系统中注册了3000端口,那么,以后从外面传进来的目的端口号为3000的UDP包都会交给该程序。
端口号理论上可以有2^16这么多。
因为它的长度是16个bit2 、UDP 的检验和这是一个可选的选项,并不是所有的系统都对UDP数据包加以检验和数据(相对TCP协议的必须来说),但是RFC中标准要求,发送端应该计算检验和。
UDP检验和覆盖UDP协议头和数据,这和IP的检验和是不同的,IP协议的检验和只是覆盖IP数据头,并不覆盖所有的数据。
UDP和TCP都包含一个伪首部,这是为了计算检验和而摄制的。
伪首部甚至还包含IP地址这样的IP协议里面都有的信息,目的是让UDP两次检查数据是否已经正确到达目的地。
如果发送端没有打开检验和选项,而接收端计算检验和有差错,那么UDP数据将会被悄悄的丢掉(不保证送达),而不产生任何差错报文。
3 、UDP 的长度UDP可以很长很长,可以有65535字节那么长。
但是一般网络在传送的时候,一次一般传送不了那么长的协议(涉及到MTU的问题),就只好对数据分片,当然,这些是对UDP等上级协议透明的,UDP不需要关心IP协议层对数据如何分片。
4 、IP 分片IP在从上层接到数据以后,要根据IP地址来判断从那个接口发送数据(通过选路),并进行MTU的查询,如果数据大小超过MTU就进行数据分片。
数据的分片是对上层和下层透明,而数据也只是到达目的地还会被重新组装,不过不用担心,IP层提供了足够的信息进行数据的再组装。
在IP头里面,16bit识别号唯一记录了一个IP包的ID,具有同一个ID的IP片将会被重新组装;而13位片偏移则记录了某IP片相对整个包的位置;而这两个表示中间的3bit标志则标示着该分片后面是否还有新的分片。
这三个标示就组成了IP分片的所有信息,接受方就可以利用这些信息对IP数据进行重新组织(就算是后面的分片比前面的分片先到,这些信息也是足够了)。
因为分片技术在网络上被经常的使用,所以伪造IP分片包进行流氓攻击的软件和人也就层出不穷。
5 、ICMP源站抑制差错当目标主机的处理速度赶不上数据接收的速度,因为接受主机的IP层缓存会被占满,所以主机就会发出一个“我受不了”的一个ICMP报文。
--单播广播和多播单播单播是说,对特定的主机进行数据传送。
例如给某一个主机发送IP数据包。
这时候,数据链路层给出的数据头里面是非常具体的目的地址,对于以太网来 说,就是网卡的MAC地址(不是FF-FF-FF-FF-FF-FF这样的地址)。
现在的具有路由功能的主机应该可以将单播数据定向转发,而目的主机的网 络接口则可以过滤掉和自己MAC地址不一致的数据。
广播广播是主机针对某一个网络上的所有主机发送数据包。
这个网络可能是网络,可能是子网,还可能是所有的子网。
如果是网络,例如A类网址的广播就是 netid.255.255.255,如果是子网,则是netid.netid.subnetid.255;如果是所有的子网(B类IP)则是则是 netid.netid.255.255。
广播所用的MAC地址FF-FF-FF-FF-FF-FF。
网络内所有的主机都会收到这个广播数据,网卡只要把 MAC地址为FF-FF-FF-FF-FF-FF的数据交给内核就可以了。
一般说来ARP,或者路由协议RIP应该是以广播的形式播发的。
多播可以说广播是多播的特例,多播就是给一组特定的主机(多播组)发送数据,这样,数据的播发范围会小一些(实际上播发的范围一点也没有变小),多播的MAC地址是最高字节的低位为一,例 如01-00-00-00-00-00。
多播组的地址是D类IP,规定是224.0.0.0-239.255.255.255。
虽然多播比较特殊,但是究其原理,多播的数据还是要通过数据链路层进行然后进行发送。
所以一个以太网卡在绑定了一个多播IP地址之后,必 定还要绑定一个多播的MAC地址,才能使得其可以像单播那样工作。
这个多播的IP和多播MAC地址有一个对应的算法,在书的p133到p134之间。
可以看到 这个对应不是一一对应的,主机还是要对多播数据进行过滤。
--TCPTCP和UDP处在同一层---运输层,但是TCP和UDP最不同的地方是,TCP提供了一种可靠的数据传输服务,TCP是面向连接的,也就是说,利用TCP通信的两台主机首先要经历一个“拨打电话”的过程,等到通信准备结束才开始传输数据,最后结束通话。
所以TCP要比UDP可靠的多,UDP是把数据直接发出去,而不管对方是不是在收信,就算是UDP无法送达,也不会产生ICMP差错报文,这一经时重申了很多遍了。
把TCP保证可靠性的简单工作原理:应用数据被分割成TCP认为最适合发送的数据块。
这和UDP完全不同,应用程序产生的 数据报长度将保持不变。
由TCP传递给IP的信息单位称为报文段或段当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。
如果不能 及时收到一个确认,将重发这个报文段.当TCP收到发自TCP连接另一端的数据,它将发送一个确认。
这个确认不是立即发送,通常将推迟几分之一秒.TCP将保持它首部和数据的检验和。
这是一个端到端的检验和,目的是检测数据在传输 过程中的任何变化。
如果收到段的检验和有差错, T P将丢弃这个报文段和不确认收到此报文段(希望发端超时并重发)。
既然TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段 的到达也可能会失序。
如果必要, TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。
TCP还能提供流量控制。
TCP连接的每一方都有固定大小的缓冲空间。
TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据。
这将防止较快主机致使较慢主机的。
从这段话中可以看到,TCP中保持可靠性的方式就是超时重发,这是有道理的,虽然TCP也可以用各种各样的ICMP报文来处理这些,但是这也不是可靠的,最可靠的方式就是只要不得到确认,就重新发送数据报,直到得到对方的确认为止。
TCP的首部和UDP首部一样,都有发送端口号和接收端口号。
但是显然,TCP的首部信息要比UDP的多,可以看到,TCP协议提供了发送和确认所需要的所有必要的信息。
可以想象一个TCP数据的发送应该是如下的一个过程。
双方建立连接发送方给接受方TCP数据报,然后等待对方的确认TCP数据报,如果没有,就重新发,如果有,就发送下一个数据报。
接受方等待发送方的数据报,如果得到数据报并检验无误,就发送ACK(确认)数据报,并等待下一个TCP数据报的到来。
直到接收到FIN(发送完成数据报)中止连接可以想见,为了建立一个TCP连接,系统可能会建立一个新的进程(最差也是一个线程),来进行数据的传送--TCP协议TCP是一个面向连接的协议,在发送输送之前 ,双方需要确定连接。
而且,发送的数据可以进行TCP层的分片处理。
TCP连接的建立过程 ,可以看成是三次握手 。
而连接的中断可以看成四次握手 。
1.连接的建立在建立连接的时候,客户端首先向服务器申请打开某一个端口(用SYN段等于1的TCP报文),然后服务器端发回一个ACK报文通知客户端请求报文收到,客户端收到确认报文以后再次发出确认报文确认刚才服务器端发出的确认报文(绕口么),至此,连接的建立完成。
这就叫做三次握手。
如果打算让双方都做好准备的话,一定要发送三次报文,而且只需要三次报文就可以了。
可以想见,如果再加上TCP的超时重传机制,那么TCP就完全可以保证一个数据包被送到目的地。
2.结束连接TCP有一个特别的概念叫做half-close,这个概念是说,TCP的连接是全双工(可以同时发送和接收)连接,因此在关闭连接的时候,必须关闭传和送两个方向上的连接。
客户机给服务器一个FIN为1的TCP报文,然后服务器返回给客户端一个确认ACK报文,并且发送一个FIN报文,当客户机回复ACK报文后(四次握手),连接就结束了。
3.最大报文长度在建立连接的时候,通信的双方要互相确认对方的最大报文长度(MSS),以便通信。
一般这个SYN长度是MTU减去固定IP首部和TCP首部长度。
对于一个以太网,一般可以达到1460字节。
当然如果对于非本地的IP,这个MSS可能就只有536字节,而且,如果中间的传输网络的MSS更加的小的话,这个值还会变得更小。
4.客户端应用程序的状态迁移图客户端的状态可以用如下的流程来表示:CLOSED->SYN_SENT->ESTABLISHED->FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT->CLOSED以上流程是在程序正常的情况下应该有的流程,从书中的图中可以看到,在建立连接时,当客户端收到SYN报文的ACK以后,客户端就打开了数据交互地连接。
而结束连接则通常是客户端主动结束的,客户端结束应用程序以后,需要经历FIN_WAIT_1,FIN_WAIT_2等状态,这些状态的迁移就是前面提到的结束连接的四次握手。
5.服务器的状态迁移图服务器的状态可以用如下的流程来表示:CLOSED->LISTEN->SYN收到->ESTABLISHED->CLOSE_WAIT->LAST_ACK->CLOSED在建立连接的时候,服务器端是在第三次握手之后才进入数据交互状态,而关闭连接则是在关闭连接的第二次握手以后(注意不是第四次)。
而关闭以后还要等待客户端给出最后的ACK包才能进入初始的状态。
6.TCP服务器设计前面曾经讲述过UDP的服务器设计,可以发现UDP的服务器完全不需要所谓的并发机制,它只要建立一个数据输入队列就可以。
但是TCP不同,TCP服务器对于每一个连接都需要建立一个独立的进程(或者是轻量级的,线程),来保证对话的独立性。
所以TCP服务器是并发的。
而且TCP还需要配备一个呼入连接请求队列(UDP服务器也同样不需要),来为每一个连接请求建立对话进程,这也就是为什么各种TCP服务器都有一个最大连接数的原因。
而根据源主机的IP和端口号码,服务器可以很轻松的区别出不同的会话,来进行数据的分发。
TCP的交互数据流对于交互性要求比较高的应用,TCP给出两个策略来提高发送效率和减低网络负担:(1)捎带ACK。
(2)Nagle算法(一次尽量多的发数据)捎带ACK的发送方式这个策略是说,当主机收到远程主机的TCP数据报之后,通常不马上发送ACK数据报,而是等上一个短暂的时间,如果这段时间里面主机还有发送到远程主机的TCP数据报,那么就把这个ACK数据报“捎带”着发送出去,把本来两个TCP数据报整合成一个发送。
一般的,这个时间是200ms。
可以明显地看到这个策略可以把TCP数据报的利用率提高很多。
Nagle算法上过bbs的人应该都会有感受,就是在网络慢的时候发贴,有时键入一串字符串以后,经过一段时间,客户端“发疯”一样突然回显出很多内容,就好像数据一下子传过来了一样,这就是Nagle算法的作用。
Nagle算法是说,当主机A给主机B发送了一个TCP数据报并进入等待主机B的ACK数据报的状态时,TCP的输出缓冲区里面只能有一个TCP数据报,并且,这个数据报不断地收集后来的数据,整合成一个大的数据报,等到B主机的ACK包一到,就把这些数据“一股脑”的发送出去。
虽然这样的描述有些不准确,但还算形象和易于理解,我们同样可以体会到这个策略对于低减网络负担的好处。
在编写插口程序的时候,可以通过TCP_NODELAY来关闭这个算法。
并且,使用这个算法看情况的,比如基于TCP的X窗口协议,如果处理鼠标事件时还是用这个算法,那么“延迟”可就非常大了。
2.TCP的成块数据流对于FTP这样对于数据吞吐量有较高要求的要求,将总是希望每次尽量多的发送数据到对方主机,就算是有点“延迟”也无所谓。
TCP也提供了一整套的策略来支持这样的需求。
TCP协议中有16个bit表示“窗口”的大小,这是这些策略的核心。
2.1.传输数据时ACK的问题在解释滑动窗口前,需要看看ACK的应答策略,一般来说,发送端发送一个TCP数据报,那么接收端就应该发送一个ACK数据报。
但是事实上却不是这样,发送端将会连续发送数据尽量填满接受方的缓冲区,而接受方对这些数据只要发送一个ACK报文来回应就可以了,这就是ACK的累积特性,这个特性大大减少了发送端和接收端的负担。
2.2.滑动窗口滑动窗口本质上是描述接受方的TCP数据报缓冲区大小的数据,发送方根据这个数据来计算自己最多能发送多长的数据。
如果发送方收到接受方的窗口大小为0的TCP数据报,那么发送方将停止发送数据,等到接受方发送窗口大小不为0的数据报的到来。
2.3.数据拥塞上面的策略用于局域网内传输还可以,但是用在广域网中就可能会出现问题,最大的问题就是当传输时出现了瓶颈(比如说一定要经过一个slip低速链路)所产生的大量数据堵塞问题(拥塞),为了解决这个问题,TCP发送方需要确认连接双方的线路的数据最大吞吐量是多少。
这,就是所谓的拥塞窗口。
拥塞窗口的原理很简单,TCP发送方首先发送一个数据报,然后等待对方的回应,得到回应后就把这个窗口的大小加倍,然后连续发送两个数据报,等到对方回应以后,再把这个窗口加倍(先是2的指数倍,到一定程度后就变成现行增长,这就是所谓的慢启动),发送更多的数据报,直到出现超时错误,这样,发送端就了解到了通信双方的线路承载能力,也就确定了拥塞窗口的大小,发送方就用这个拥塞窗口的大小发送数据。
要观察这个现象是非常容易的,我们一般在下载数据的时候,速度都是慢慢“冲起来的”--TCP的超时和重传超时重传是TCP协议保证数据可靠性的另一个重要机制,其原理是在发送某一个数据以后就开启一个计时器,在一定时间内如果没有得到发送的数据报的ACK报文,那么就重新发送数据,直到发送成功为止。
超时超时时间的计算是超时的核心部分,TCP要求这个算法能大致估计出当前的网络状况,虽然这确实很困难。
要求精确的原因有两个:(1)定时长久会造成网络利用率不高。
(2)定时太短会造成多次重传,使得网络阻塞。
所以,书中给出了一套经验公式,和其他的保证计时器准确的措施。
计时器的使用一个连接中,有且仅有一个测量定时器被使用。
也就是说,如果TCP连续发出3组数据,只有一组数据会被测量。
ACK数据报不会被测量,原因很简单,没有ACK的ACK回应可以供结束定时器测量。
重传前面曾经提到过,数据在传输的时候不能只使用一个窗口协议,我们还需要有一个拥塞窗口来控制数据的流量,使得数据不会一下子都跑到网路中引起“拥塞”。
也曾经提到过,拥塞窗口最初使用指数增长的速度来增加自身的窗口,直到发生超时重传,再进行一次微调。
但是没有提到,如何进行微调,拥塞避免算法和慢启动门限就是为此而生。
所谓的慢启动门限就是说,当拥塞窗口超过这个门限的时候,就使用拥塞避免算法,而在门限以内就采用慢启动算法。
所以这个标准才叫做门限,通常,拥塞窗口记做cwnd,慢启动门限记做ssthresh。
下面我们来看看拥塞避免和慢启动是怎么一起工作的算法概要对一个给定的连接,初始化cwnd为1个报文段,ssthresh为65535个字节。
TCP输出例程的输出不能超过cwnd和接收方通告窗口的大小。
拥塞避免是发送方使用 的流量控制,而通告窗口则是接收方进行的流量控制。
前者是发送方感受到的网络拥塞的估 计,而后者则与接收方在该连接上的可用缓存大小有关。
当拥塞发生时(超时或收到重复确认),ssthresh被设置为当前窗口大小的一半(cwnd 和接收方通告窗口大小的最小值,但最少为2个报文段)。
此外,如果是超时引起了拥塞,则 cwnd被设置为1个报文段(这就是慢启动)。
当新的数据被对方确认时,就增加cwnd,但增加的方法依赖于我们是否正在进行慢启 动或拥塞避免。
如果cwnd小于或等于ssthresh,则正在进行慢启动,否则正在进行拥塞避免。
慢启动一直持续到我们回到当拥塞发生时所处位置的半时候才停止(因为我们记录了在步骤2 中给我们制造麻烦的窗口大小的一半),然后转为执行拥塞避免。
快速重传和快速恢复算法这是数据丢包的情况下给出的一种修补机制。
一般来说,重传发生在超时之后,但是如果发送端接受到3个以上的重复ACK的情况下,就应该意识到,数据丢了,需要重新传递。
这个机制是不需要等到重传定时器溢出的,所以叫做快速重传,而重新传递以后,因为走的不是慢启动而是拥塞避免算法,所以这又叫做快速恢复算法。
流程如下:当收到第3个重复的ACK时,将ssthresh设置为当前拥塞窗口cwnd的一半。
重传丢失的 报文段。
设置cwnd为ssthresh加上3倍的报文段大小。
每次收到另一个重复的ACK时, cwnd增加1个报文段大小并发送1个分组(如果新的 cwnd允许发送)。
当下一个确认新数据的ACK到达时,设置cwnd为ssthresh(在第1步中设置的值)。
这个 ACK应该是在进行重传后的一个往返时间内对步骤1中重传的确认。
另外,这个ACK也应该 是对丢失的分组和收到的第1个重复的ACK之间的所有中间报文段的确认。
这一步采用的是拥 塞避免,因为当分组丢失时我们将当前的速率减半。
TCP的其它定时器坚持定时器用于防止通告窗口为0以后双方互相等待死锁的情况坚持定时器的原理是简单的,当TCP服务器收到了客户端的0滑动窗口报文的时候,就启动一个定时器来计时,并在定时器溢出的时候向向客户端查询窗口是否已经增大,如果得到非零的窗口就重新开始发送数据,如果得到0窗口就再开一个新的定时器准备下一次查询。
通过观察可以得知,TCP的坚持定时器使用1,2,4,8,16……64秒这样的普通指数退避序列来作为每一次的溢出时间。
2.保活定时器保活定时器更加的简单,还记得FTP或者Http服务器都有Sesstion Time机制么
因为TCP是面向连接的,所以就会出现只连接不传送数据的“半开放连接”,服务器当然要检测到这种连接并且在某些情况下释放这种连接,这就是保活定时器的作用。
其时限根据服务器的实现不同而不通。
另外要提到的是,当其中一端如果崩溃并重新启动的情况下,如果收到该端“前生”的保活探察,则要发送一个RST数据报文帮助另一端结束连接。
请说一下http请求的基本过程
首先http是一用层的协议,在这个层的协议,一种通讯规范,也就是双方要进行通讯,大家要事先约定一个规范。
1.连接 当我们输入这样一个请求时,首先要建立一个socket连接,因为socket是通过ip和端口建立的,所以之前还有一个DNS解析过程,把变成ip,如果url里不包含端口号,则会使用该协议的默认端口号。
DNS的过程是这样的:首先我们知道我们本地的机器上在配置网络时都会填写DNS,这样本机就会把这个url发给这个配置的DNS服务器,如果能够找到相应的url则返回其ip,否则该DNS将继续将该解析请求发送给上级DNS,整个DNS可以看做是一个树状结构,该请求将一直发送到根直到得到结果。
现在已经拥有了目标ip和端口号,这样我们就可以打开socket连接了。
2.请求 连接成功建立后,开始向web服务器发送请求,这个请求一般是GET或POST命令(POST用于FORM参数的传递)。
GET命令的格式为: GET 路径\\\/文件名 HTTP\\\/1.0文件名指出所访问的文件,HTTP\\\/1.0指出Web浏览器使用的HTTP版本。
现在可以发送GET命令:GET \\\/mydir\\\/index.html HTTP\\\/1.0,3.应答 web服务器收到这个请求,进行处理。
从它的文档空间中搜索子目录mydir的文件index.html。
如果找到该文件,Web服务器把该文件内容传送给相应的Web浏览器。
为了告知浏览器,,Web服务器首先传送一些HTTP头信息,然后传送具体内容(即HTTP体信息),HTTP头信息和HTTP体信息之间用一个空行分开。
常用的HTTP头信息有: ① HTTP 1.0 200 OK 这是Web服务器应答的第一行,列出服务器正在运行的HTTP版本号和应答代码。
代码200 OK表示请求完成。
② MIME_Version:1.0 它指示MIME类型的版本。
③ content_type:类型 这个头信息非常重要,它指示HTTP体信息的MIME类型。
如:content_type:text\\\/html指示传送的数据是HTML文档。
④ content_length:长度值 它指示HTTP体信息的长度(字节)。
4.关闭连接:当应答结束后,Web浏览器与Web服务器必须断开,以保证其它Web浏览器能够与Web服务器建立连接。
下面我们具体分析其中的数据包在网络中漫游的经历在网络分层结构中,各层之间是严格单向依赖的。
“服务”是描述各层之间关系的抽象概念,即网络中各层向紧邻上层提供的一组操作。
下层是服务提供者,上层是请求服务的用户。
服务的表现形式是原语(primitive),如系统调用或库函数。
系统调用是操作系统内核向网络应用程序或高层协议提供的服务原语。
网络中的n层总要向n+1层提供比n-1层更完备的服务,否则n层就没有存在的价值。
传输层实现的是“端到端”通信,引进网间进程通信概念,同时也要解决差错控制,流量控制,数据排序(报文排序),连接管理等问题,为此提供不同的服务方式。
通常传输层的服务通过系统调用的方式提供,以socket的方式。
对于客户端,要想建立一个socket连接,需要调用这样一些函数socket() bind() connect(),然后就可以通过send()进行数据发送。
现在看数据包在网络中的穿行过程:应用层首先我们可以看到在应用层,根据当前的需求和动作,结合应用层的协议,有我们确定发送的数据内容,我们把这些数据放到一个缓冲区内,然后形成了应用层的报文data。
传输层这些数据通过传输层发送,比如tcp协议。
所以它们会被送到传输层处理,在这里报文打上了传输头的包头,主要包含端口号,以及tcp的各种制信息,这些信息是直接得到的,因为接口中需要指定端口。
这样就组成了tcp的数据传送单位segment。
tcp是一种端到端的协议,利用这些信息,比如tcp首部中的序号确认序号,根据这些数字,发送的一方不断的进行发送等待确认,发送一个数据段后,会开启一个计数器有当收到确认后才会发送下一个,如果超过计数时间仍未收到确认则进行重发,在接受端如果收到错误数据,则将其丢弃,这将导致发送端超时重发。
通过tcp协议,控制了数据包的发送序列的产生,不断的调整发送序列,实现流控和数据完整。
网络层然后待发送的数据段送到网络层,在网络层被打包,这样封装上了网络层的包头,包头内部含有源及目的的ip地址,该层数据发送单位被称为packet。
网络层开始负责将这样的数据包在网络上传输,如何穿过路由器,最终到达目的地址。
在这里,根据目的ip地址,就需要查找下一跳路由的地址。
首先在本机,要查找本机的路由表,在windows上运行route print就可以看到当前路由表内容,有如下几项:Active Routes Default Route Persistent Route.整个查找过程是这样的:(1)根据目的地址,得到目的网络号,如果处在同一个内网,则可以直接发送。
(2)如果不是,则查询路由表,找到一个路由。
(3)如果找不到明确的路由,此时在路由表中还会有默认网关,也可称为缺省网关,IP用缺省的网关地址将一个数据传送给下一个指定的路由器,所以网关也可能是路由器,也可能只是内网向特定路由器传输数据的网关。
(4)路由器收到数据后,它再次为远程主机或网络查询路由,若还未找到路由,该数据包将发送到该路由器的缺省网关地址。
而数据包中包含一个最大路由跳数,如果超过这个跳数,就会丢弃数据包,这样可以防止无限传递。
路由器收到数据包后,只会查看网络层的包裹数据,目的ip。
所以说它是工作在网络层,传输层的数据对它来说则是透明的。
如果上面这些步骤都没有成功,那么该数据报就不能被传送。
如果不能传送的数据报来自本机,那么一般会向生成数据报的应用程序返回一个“主机不可达”或 “网络不可达”的错误。
以windows下主机的路由表为例,看路由的查找过程======================================================================Active Routes:Network Destination Netmask Gateway Interface Metric0.0.0.0 0.0.0.0 192.168.1.2 192.168.1.101 10127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1192.168.1.0 255.255.255.0 192.168.1.101 192.168.1.101 10192.168.1.101 255.255.255.255 127.0.0.1 127.0.0.1 10192.168.1.255 255.255.255.255 192.168.1.101 192.168.1.101 10 224.0.0.0 240.0.0.0 192.168.1.101 192.168.1.101 10255.255.255.255 255.255.255.255 192.168.1.101 192.168.1.101 1Default Gateway: 192.168.1.2Network Destination 目的网段 Netmask 子网掩码 Gateway 下一跳路由器入口的ip,路由器通过interface和gateway定义一调到下一个路由器的链路,通常情况下,interface和gateway是同一网段的。
Interface 到达该目的地的本路由器的出口ip(对于我们的个人pc来说,通常由机算机A的网卡,用该网卡的IP地址标识,当然一个pc也可以有多个网卡)。
网关这个概念,主要用于不同子网间的交互,当两个子网内主机A,B要进行通讯时,首先A要将数据发送到它的本地网关,然后网关再将数据发送给B所在的网关,然后网关再发送给B。
默认网关,当一个数据包的目的网段不在你的路由记录中,那么,你的路由器该把那个数据包发送到哪里
缺省路由的网关是由你的连接上的default gateway决定的,也就是我们通常在网络连接里配置的那个值。
通常interface和gateway处在一个子网内,对于路由器来说,因为可能具有不同的interface,当数据包到达时,根据NetworkDestination寻找匹配的条目,如果找到,interface则指明了应当从该路由器的那个接口出去,gateway则代表了那个子网的网关地址。
第一条 0.0.0.0 0.0.0.0 192.168.1.2 192.168.1.101 100.0.0.0代表了缺省路由。
该路由记录的意思是:当我接收到一个数据包的目的网段不在我的路由记录中,我会将该数据包通过192.168.1.101这个接口发送到192.168.1.2这个地址,这个地址是下一个路由器的一个接口,这样这个数据包就可以交付给下一个路由器处理,与我无关。
该路由记录的线路质量10。
当有多个条目匹配时,会选择具有较小Metric值的那个。
第三条 192.168.1.0 255.255.255.0 192.168.1.101 192.168.1.101 10直联网段的路由记录:当路由器收到发往直联网段的数据包时该如何处理,这种情况,路由记录的interface和gateway是同一个。
当我接收到一个数据包的目的网段是192.168.1.0时,我会将该数据包通过192.168.1.101这个接口直接发送出去,因为这个端口直接连接着192.168.1.0这个网段,该路由记录的线路质量10 (因interface和gateway是同一个,表示数据包直接传送给目的地址,不需要再转给路由器)。
一般就分这两种情况,目的地址与当前路由器接口是否在同一子网。
如果是则直接发送,不需再转给路由器,否则还需要转发给下一个路由器继续进行处理。
查找到下一跳ip地址后,还需要知道它的mac地址,这个地址要作为链路层数据装进链路层头部。
这时需要arp协议,具体过程是这样的,查找arp缓冲,windows下运行arp-a可以查看当前arp缓冲内容。
如果里面含有对应ip的mac地址,则直接返回。
否则需要发生arp请求,该请求包含源的ip和mac地址,还有目的地的ip地址,在网内进行广播,所有的主机会检查自己的ip与该请求中的目的ip是否一样,如果刚好对应则返回自己的mac地址,同时将请求者的ipmac保存。
这样就得到了目标ip的mac地址。
链路层将mac地址及链路层控制信息加到数据包里,形成Frame,Frame在链路层协议下,完成了相邻的节点间的数据传输,完成连接建立,控制传输速度,数据完整。
物理层物理线路则只负责该数据以bit为单位从主机传输到下一个目的地。
下一个目的地接受到数据后,从物理层得到数据然后经过逐层的解包 到 链路层 到 网络层,然后开始上述的处理,在经网络层 链路层 物理层将数据封装好继续传往下一个地址。
在上面的过程中,可以看到有一个路由表查询过程,而这个路由表的建立则依赖于路由算法。
也就是说路由算法实际上只是用来路由器之间更新维护路由表,真正的数据传输过程并不执行这个算法,只查看路由表。
这个概念也很重要,需要理解常用的路由算法。
而整个tcp协议比较复杂,跟链路层的协议有些相似,其中有很重要的一些机制或者概念需要认真理解,比如编号与确认,流量控制,重发机制,发送接受窗口。
tcp\\\/ip基本模型及概念物理层设备,中继器(repeater),集线器(hub)。
对于这一层来说,从一个端口收到数据,会转发到所有端口。
链路层协议:SDLC(Synchronous Data Link Control)HDLC(High-level Data LinkControl)ppp协议独立的链路设备中最常见的当属网卡,网桥也是链路产品。
集线器MODEM的某些功能有人认为属于链路层,对此还有些争议认为属于物理层设备。
除此之外,所有的交换机都需要工作在数据链路层,但仅工作在数据链路层的仅是二层交换机。
其他像三层交换机、四层交换机和七层交换机虽然可对应工作在OSI的三层、四层和七层,但二层功能仍是它们基本的功能。
因为有了MAC地址表,所以才充分避免了冲突,因为交换机通过目的MAC地址知道应该把这个数据转发到哪个端口。
而不会像HUB一样,会转发到所有滴端口。
所以,交换机是可以划分冲突域滴。
网络层四个主要的协议: 网际协议IP:负责在主机和网络之间寻址和路由数据包。
地址解析协议ARP:获得同一物理网络中的硬件主机地址。
网际控制消息协议ICMP:发送消息,并报告有关数据包的传送错误。
互联组管理协议IGMP:被IP主机拿来向本地多路广播路由器报告主机组成员。
该层设备有三层交换机,路由器。
传输层两个重要协议 TCP 和 UDP 。
端口概念:TCP\\\/UDP 使用 IP 地址标识网上主机,使用端口号来标识应用进程,即 TCP\\\/UDP 用主机 IP地址和为应用进程分配的端口号来标识应用进程。
端口号是 16 位的无符号整数, TCP 的端口号和 UDP的端口号是两个独立的序列。
尽管相互独立,如果 TCP 和 UDP同时提供某种知名服务,两个协议通常选择相同的端口号。
这纯粹是为了使用方便,而不是协议本身的要求。
利用端口号,一台主机上多个进程可以同时使用TCP\\\/UDP 提供的传输服务,并且这种通信是端到端的,它的数据由 IP 传递,但与 IP数据报的传递路径无关。
网络通信中用一个三元组可以在全局唯一标志一个应用进程:(协议,本地地址,本地端口号)。
也就是说tcp和udp可以使用相同的端口。
可以看到通过(协议,源端口,源ip,目的端口,目的ip)就可以用来完全标识一组网络连接。
应用层基于tcp:Telnet FTP SMTP DNS HTTP 基于udp:RIP NTP(网落时间协议)和DNS (DNS也使用TCP)SNMP TFTP



