Lav>THmax,则将新到达的数据报丢弃。
Lav介于之间时,按照概率p将新到达的数据报丢弃。
Ø6.TCP滑动窗口与回退N针协议。
✧TCP滑动窗口:
发送方和接收方都会维护一个数据帧的序列,这个序列被称为窗口。
发送方的窗口大小由接收方确定,目的在于控制发送速度,以免接收方的缓冲不够大,导致溢出,同时流量控制可以避免网络拥塞。
✧1比特滑动窗口协议(停等协议):
接收方和发送方的窗口大小都是1。
发送方每次只能发送一个,并且必须等待这个数据报的ACK,才能发送下一个。
ARQ(AutomaticRepeatreQuest)自动重传请求。
重传的请求是自动进行的。
接收方不需要请求发送方重传某个出错的分组。
✧回退N(Go-back-N)表示需要再退回来重传已发送的N个分组。
累计确认:
不必对收到的分组逐个发送确认,而是对按序到达的最后一个分组发送确认。
优点是容易实现,即使确认丢失也不必重传。
缺点是:
不能向发送方反映接收方已经正确收到的所有分组。
✧选择确认SACK:
接收方收到了不连续的字节块。
如果这些字节块的序号在接收窗口内,那么接收方收下这些数据,但要把这些信息准确的告诉发送方,是发送方不再发送重复的数据。
✧选择重传协议:
后退N协议的问题是,当有错误帧出现后,要重发之后的所有帧,会是网络状况恶化。
重传协议是用来解决这个问题的。
接收端总会缓存所有收到的帧,当某个帧出错时,值要求重传这一个帧。
缺点在于接收端要更多的缓存。
Ø7.Http的报文结构。
方法:
对所请求的对象进行的操作,实际上就是一些命令。
包括getpostoptionheadputdeletetraceconnect
URL:
所请求的资源的URL。
版本:
HTTP的版本。
版本:
HTTP的版本
状态码:
1XX表示通知信息,如请求收到了或正在进行处理。
2XX表示成功,如接受或知道了。
3XX表示重定向,表示要完成的请求还必须采取进一步行动。
4XX表示客户的差错,如请求中有错误的语法或不能完成。
5XX表示服务器的差错,如服务器失效无法完成请求。
Ø8.Http的状态码含义。
Ø状态码:
1XX表示通知信息,如请求收到了或正在进行处理。
Ø2XX表示成功,如接受或知道了。
Ø3XX表示重定向,表示要完成的请求还必须采取进一步行动。
Ø4XX表示客户的差错,如请求中有错误的语法或不能完成。
Ø5XX表示服务器的差错,如服务器失效无法完成请求。
Ø9.Httprequest的几种类型。
getpostoptionheadputdeletetraceconnect
Ø10.Http1.1和Http1.0的区别
HTTP1.0规定浏览器与服务器只保持短暂的连接,浏览器每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器也不跟踪每个客户也不记录过去的请求。
HTTP1.1支持持久连接,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。
HTTP1.1还允许客户端不用等待上一次请求结果返回,就可以发出下一次请求(流水线),但服务器端必须按照收到客户端请求的先后顺序依次回送响应结果,以保证客户端能够区分出每次请求的响应内容,这样显着减少了所需时间。
HTTP1.0不支持Host请求头字段,在HTTP1.1中增加了Host请求头字段,WEB浏览器可以使用主机头名来明确表示要访问服务器上的哪个WEB站点,实现了在一台WEB服务器上可以在同一个IP地址和端口号上使用不同的主机名来创建多个虚拟WEB站点。
HTTP1.1还提供了与身份认证、状态管理和Cache缓存机制相关的请求头和响应头。
Ø11.Http怎么处理长连接。
判断长连接是否需要结束?
Keep-Alive:
timeout=20,表示这个TCP通道可以保持20秒。
另外还可能有max=XXX,表示这个长连接最多接收XXX次请求就断开。
对于客户端来说,如果服务器没有告诉客户端超时时间也没关系,服务端可能主动发起四次握手断开TCP连接,客户端能够知道该TCP连接已经无效;另外TCP还有心跳包来检测当前连接是否还活着,方法很多,避免浪费资源。
Ø12.Cookie与Session的作用于原理。
Ø13.电脑上访问一个网页,整个过程是怎么样的:
DNS、HTTP、TCP、OSPF、IP、ARP。
Ø14.Ping的整个过程。
ICMP报文是什么。
✧ICMP(InternetControlMessageProtocol)报文:
网际控制报文协议。
通过它可以知道故障的具体原因和位置。
✧由于IP不是为可靠传输服务设计的,ICMP的目的主要是用在TCP/IP网络中发送出错和控制消息。
ICMP数据包是封装在IP数据包里的。
ICMP的错误报告只能通知出错数据报的源主机。
✧ICMP报文三种:
差错报告(IP不可靠传输)、控制报文(用于重定向)、请求应答报文(测试路由是否可达ping)。
Ping的整个过程:
1)同一网段内:
如果主机A要去ping主机B。
主机A就要查询自己的MAC地址表,如果没有找到B的MAC地址,就会向外发送一个ARP广播包。
首先,交换机会收到这个报文,交换机有学习MAC地址的功能,他会检索自己有没有保存主机B的MAC地址,如果有,就返回给主机A,没有,就会向所有端口发送ARP广播,其他主机收到后,发现不是找自己,就丢弃报文。
主机B收到报文后,就立即响应,发送自己的MAC地址,同时学习到主机A的MAC地址,并按照同样的ARP报文格式返回主机A。
这时,主机A学到了主机B的MAC地址,就把这个MAC地址封装到ICMP协议的二层报文中向B发送,B收到这个报文后,发现是A的ICMP回显请求,就按同样格式返回一个值给A,完成ping.
2)不同网段内
主机A要ping主机C,两者不在一个网段,A需要找网关转发,为了学习网关的MAC地址,A发送一个ARP广播,学到后,再发封装ICMP报文给网关路由器。
路由器接收到A的ICMP报文,查找路由表的目的IP,得到一个出口指针,加上自己的MAC地址向主机C转发。
路由器端口2和主机C相互学习MAC地址,路由器2端口转发非1端口,1已经学到A的MAC地址,将ICMP的回显请求回复。
Ø15.C/S模式下使用socket通信,几个关键函数。
✧什么是Socket?
WinSock(WindowsSockets)是处理网络通信的WindowsAPI。
许多函数与在BSD中使用的Berkely套接字函数是相同的。
套接字,简单的说就是通信双方的一种约定,用套接字中的相关函数来完成通信过程。
应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。
多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据。
为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字(Socket)的接口。
区分不同应用程序进程间的网络通信和连接,主要有3个参数:
通信的目的IP地址、使用的传输层协议(TCP或UDP)和使用的端口号。
Socket原意是“插座”,通过将这3个参数结合起来,与一个“插座”Socket绑定,应用层就可以和传输层通过套接字接口区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。
Socket类型;
传输套接字主要有两类:
流式套接字(SOCK_STREAM)和数据报套接字(SOCK_DGRAM)。
流类型的套接字是为需要可靠连接的应用程序设计的。
这些程序通常使用连续的数据流。
用于这种类型套接字的协议是TCP,适合FTP这类实现。
流套接字是最常用的,一些众所周知的协议如HTTP、TCP、SMTP、POP3等都是基于面向流的协议。
数据报套接字使用UDP做为下层协议,是无连接的,有一个最大缓冲区大小(数据包大小的最大值)。
它是为那些需要发送小数据包,并且对可靠性要求不高的应用程序设计的。
与流式套接字不同,数据报套接字并不保证数据会到达终端,也不保证它是以正确的顺序到来的。
数据报套接字的传输效率相当高,它经常用于音频或视频应用程序。
对这些程序来说,速度比可靠性更加重要。
二、基本socket函数
1、socket函数
包含头文件?
功能:
创建一个套接字用于通信?
原型:
intsocket(intdomain,inttype,intprotocol);?
参数?
domain:
指定通信协议族(protocolfamily),AF_INET、AF_INET6、AF_UNIX等?
type:
指定socket类型,流式套接字SOCK_STREAM,数据报套接字SOCK_DGRAM,原始套接字SOCK_RAW?
protocol:
协议类型,IPPROTO_TCP等;一般由前两个参数就决定了协议类型,设置为0即可。
?
返回值:
成功返回非负整数,它与文件描述符类似,我们把它称为套接口描述字,简称套接字。
失败返回-1
2、bind函数
包含头文件?
功能:
绑定一个本地地址到套接字?
原型:
intbind(intsockfd,conststructsockaddr*addr,socklen_taddrlen);?
参数?
sockfd:
socket函数返回的套接字?
addr:
要绑定的地址?
addrlen:
地址长度?
返回值:
成功返回0,失败返回-1
3、listen函数
包含头文件?
功能:
将套接字用于监听进入的连接?
原型:
intlisten(intsockfd,intbacklog);?
参数?
sockfd:
socket函数返回的套接字?
backlog:
规定内核为此套接字排队的最大连接个数?
返回值:
成功返回0,失败返回-1
一般来说,listen函数应该在调用socket和bind函数之后,调用函数accept之前调用。
?
对于给定的监听套接口,内核要维护两个队列:
?
1、已由客户发出并到达服务器,服务器正在等待完成相应的TCP三路握手过程?
2、已完成连接的队列
如下图所示:
4、accept函数
包含头文件?
功能:
从已完成连接队列返回第一个连接,如果已完成连接队列为空,则阻塞。
?
原型:
intaccept(intsockfd,structsockaddr*addr,socklen_t*addrlen);?
参数?
sockfd:
服务器套接字?
addr:
将返回对等方的套接字地址?
addrlen:
返回对等方的套接字地址长度?
返回值:
成功返回非负整数,失败返回-1
5、connect函数
包含头文件?
功能:
建立一个连接至addr所指定的套接字?
原型:
intconnect(intsockfd,conststructsockaddr*addr,socklen_taddrlen);?
参数?
sockfd:
未连接套接字?
addr:
要连接的套接字地址?
addrlen:
第二个参数addr长度?
返回值:
成功返回0,失败返回-1
Ø16.IP地址分类。
1、A类IP地址
一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”,地址范围从。
可用的A类网络有126个
2、B类IP地址
一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,地址范围从。
可用的B类网络有16382个
3、C类IP地址
一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”。
范围从。
C类网络可达209万余个
4、D类地址用于多点广播(Multicast)。
D类IP地址第一个字节以“lll0”开始,它是一个专门保留的地址。
它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中。
多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。
5、E类IP地址
以“llll0”开始,为将来使用保留。
全零(“0.0.0.0”)地址对应于当前主机。
全“1”的IP地址(“255.255.255.255”)是当前子网的广播地址。
在IP地址3种主要类型里,各保留了3个区域作为私有地址,也就是比较常用的ip地址。
其地址范围如下:
Ø17.路由器与交换机区别。
1)二者的工作层次不同
交换机工作在数据链路层,路由器工作在网络层。
交换机工作在第二层,工作原理比较简单,而路由器工作在第三层,可以得到更多的协议信息,路由器可以做出更加智能的转发决策。
2)二者的转发所依据的对象不同
交换机利用MAC地址确定转发数据的目的地址。
路由器是利用不同的IP来确定转发地址。
IP地址是在软件中实现的,描述设备所在的网络,第三层地址被称为协议地址或者网络地址。
MAC地址是硬件自带的,网卡生产商分配的,固化到网卡中不可改变。
IP地址是由网络管理员或系统自动分配的。
3)传统的交换机只能分割冲突域,不能分割