下列哪项最恰当地描述了建立TCP连接时“第一次握手”所做的工作__C_。
A:连接发起方向接收方发送一个SYN-ACK段 B:接收方向连接发起方发送一个SYN-ACK段 C:连接发起方向目标主机的TCP进程发送一个SYN段 D:接收方向源主机得到TCP进程发送一个SYN段作为应答
第一次握手:客户端向服务器端发送SYN包(syn=j),进入SYN_SEND状态,等待服务器确认。第二次握手:服务器收到SYN包,确认SYN,此时syn=j+1,同时发送一个SYN包(syn=k)即SYN+ACK包,此时服务器进入SYN_RECV状态;第三次握手:客户端收到SYN+ACK包,向服务器发送ACK确认包,此时客户端和服务器端均进入ESTABLISHED状态。
在下面给出的协议中,(B)是TCP/IP的应用层协议。
A:ARP和FTP B:DNS和SMTP C:RARP和DNS D:ICMP和IGMP
在OSI参考模型中能实现路由选择、拥塞控制与互联功能的层是( 网络层 )。
A:传输层 B:网络层 C:应用层 D:数据链路层 网络层(Network Layer)是OSI模型中的第三层(TCP/IP模型中的网际层)。网络层提供路由和寻址的功能,使两终端系统能够互连且决定最佳路径,并具有一定的拥塞控制和流量控制的能力。
以下不是合法HTTP请求方法的是:SET
A:GET B:SET C:HEAD D:PUTHTTP/1.0定义3种:GET(请求页面信息,读取数据)、POST(提交数据进行处理请求)、HEAD(类似于GET,但是没有具体内容,用于获取报头)
HTTP/1.1增加6种:OPTIONS(返回资源支持的HTTP请求)、PUT(替换指定的资源,没有就新增)、PATCH(PUT的补充,指定资源局部更新)、DELETE(请求服务器,删除URL标识的资源数据)、TRACE(测试诊断用,服务器显示已收到的请求数据)、CONNECT(服务器作为代理,代替用户进行访问)
关于以下 URL 的描述错误的是(http表明使用TCP协议)
A:http表明使用TCP协议 B:又名统一资源定位符,方便确定一个资源,并表示它在哪里 C:URL中隐藏了端口号,默认是80端口 D:访问URL可使用大写字母http使用HTTP协议,基于TCP协议。
不属于交换机攻击的是(目录遍历攻击)
A:目录遍历攻击 B:MAC泛洪攻击 C:VLAN攻击 D:DHCP欺骗攻击交换机攻击主要有以下5种类型:
1.VLAN跳跃攻击
2.生成树攻击
3.MAC表洪水攻击
4.ARP攻击
5.VTP攻击
DHCP攻击:利用了交换机端口安全功能,MAC动态地址锁和端口静态绑定MAC,来限定交换机某个端口上可以访问网络的MAC地址,从而进行控制。
目录遍历攻击是HTTP所存在的一个安全漏洞,它使得攻击者能够访问受限的目录,并在Web服务器的根目录以外执行命令。不属于交换机攻击。
在TCP/IP中,ICMP属于哪一层协议?ip
A:ip B:ppp C:udp D:tcp
ICMP协议是IP层的附属协议,是介于IP层和TCP层之间的协议,一般认为属于IP层协议。IP协议用它来 与其他主机或路由器交换错误报文和其他的一些 网络情况。在ICMP包重携带了控制信息和故障恢复信息。主要用于路由器主机向其他路由器或者主机发送出错报文的控制信息
在发送TCP接收到确认ACK之前,由其设置的重传计时器到时,这时发送TCP会__
重传重要的数据段__。
A:重传重要的数据段 B:放弃该连接 C:调整传送窗口尺寸 D:向另一个目标端口重传数据当TCP 发送报文段时,就创建该特定报文段的重传计时器。可能发生两种情况:
1. 若在计时器截止时间到之前收到了对此特定报文段的确认,则撤销此计时器。
2. 若在收到了对此特定报文段的确认之前计时器截止期到,则重传此报文段,并将计时器复位。
IP地址块为211.168.15.192/26、211.168.15.160/27和211.168.15.128/27三个地址块经聚合后可用地址数为()?
A:126 B:62 C:128 D:68 ①211.168.15. 11000000 ②211.168.15. 10100000 ③211.168.15. 10000000 得到的聚合块是211.168.15. 10000000,它可以包含①②③。 从 1~25位三个子网完全相同,而从 26~32 位三个子网的可变部分覆盖了所有情况: 1****** + 01***** + 00***** = *******,因此可构成超网,该超网的网络号为 211.168.15.128 / 25. 从而有7位可以变的,因此是2的7次方=128,最后还要减去主机号全0的子网地址和全1的广播地址, 128-2=126.
在计算机网络中,TCP和UDP协议的相似之处是:面向连接的协议。
“tcp和udp协议的相似之处是面向连接的协议,面向连接就是在正式通信前必须要与对方建立起连接。比如你给别人打电话,必须等线路接通了、对方拿起话筒才能相互通话。”
有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的(上下左右四个方向)黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的瓷砖。
输入描述:
输入包含多组数据。 每组数据第一行是两个整数 m 和 n(1≤m, n≤20)。紧接着 m 行,每行包括 n 个字符。每个字符表示一块瓷砖的颜色,规则如下: 1. “.”:黑色的瓷砖; 2. “#”:白色的瓷砖; 3. “@”:黑色的瓷砖,并且你站在这块瓷砖上。该字符在每个数据集合中唯一出现一次。输出描述:
对应每组数据,输出总共能够到达多少块黑色的瓷砖。示例1
输入
9 6 ....#. .....# ...... ...... ...... ...... ...... #@...# .#..#.输出
45
图:BFS广度优先遍历
import java.util.*;
import java.util.Scanner;
import java.util.concurrent.ArrayBlockingQueue;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int m = sc.nextInt();
int n = sc.nextInt();
sc.nextLine();
int[][] data = new int[m][n];
int x = 0;
int y = 0;
for (int i = 0; i < m; i++) {
String str = sc.nextLine();
for (int j = 0; j < n; j++) {
//System.out.print(str.charAt(j) + " ");
switch (str.charAt(j)) {
case '.':
// 可通行
data[i][j] = 0;
break;
case '#':
// 不可通行
data[i][j] = 1;
break;
case '@':
data[i][j] = 0;
x = i;
y = j;
break;
}
}
}
System.out.println(bfs(data,x,y));
}
}
public static int bfs(int[][] data,int startX,int startY) {
int row = data.length;
int col = data[0].length;
boolean[][] visited = new boolean[row][col];
for(int i = 0;i<row;i++){
for(int j = 0;j<col;j++){
if(data[i][j] == 1){
visited[i][j] = true;
continue;
}
visited[i][j] = false;
}
}
Queue<Point> queue = null;
queue = new ArrayBlockingQueue<Point>(100);
Point start = new Point(startX, startY);
int step = 0;
step++;
queue.add(start);
visited[startX][startY] = true;
while(!queue.isEmpty()){
Point p = queue.poll();
int x = p.x;
int y = p.y;
// 不是第一行
if (x != 0 && data[x - 1][y] != 1 && !visited[x-1][y]){
step++;
queue.add(new Point(x - 1, y));
visited[x-1][y] = true;
}
// 不是第一列
if (y != 0 && data[x][y-1] != 1 && !visited[x][y-1]){
step++;
queue.add(new Point(x, y - 1));
visited[x][y-1] = true;
}
// 不是最后一行
if (x != row-1 && data[x +1][y] != 1 && !visited[x+1][y]){
step++;
queue.add(new Point(x + 1, y));
visited[x+1][y] = true;
}
// 不是最后一列
if (y != col-1 && data[x][y+1] != 1 && !visited[x][y+1]){
step++;
queue.add(new Point(x, y+1));
visited[x][y+1] = true;
}
}
return step;
}
}
class Point {
int x;
int y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
}
现在有两个好友A和B,住在一片长有蘑菇的由n*m个方格组成的草地,A在(1,1),B在(n,m)。现在A想要拜访B,由于她只想去B的家,所以每次她只会走(i,j+1)或(i+1,j)这样的路线,在草地上有k个蘑菇种在格子里(多个蘑菇可能在同一方格),问:A如果每一步随机选择的话(若她在边界上,则只有一种选择),那么她不碰到蘑菇走到B的家的概率是多少?
输入描述:
第一行N,M,K(1 ≤ N,M ≤ 20, k ≤ 100),N,M为草地大小,接下来K行,每行两个整数x,y,代表(x,y)处有一个蘑菇。输出描述:
输出一行,代表所求概率(保留到2位小数)示例1
输入
2 2 1 2 1输出
0.50
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sca = new Scanner(System.in);
while(sca.hasNext()){
int n = sca.nextInt();
int m = sca.nextInt();
int k = sca.nextInt();
boolean[][] map = new boolean[n][m];
for(int i = 0; i < k; i++) {
int x = sca.nextInt()-1;
int y = sca.nextInt()-1;
map[x][y] = true;
}
double[][] cw = new double[n][m];
cw[0][0] = 1;
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
if(map[i][j]) cw[i][j] = 0;
else if(i == 0 && j == 0) {}
else cw[i][j] = (j-1<0?0:(i+1<n?cw[i][j-1]*0.5:cw[i][j-1]))+(i-1<0?0:(j+1<m?cw[i-1][j]*0.5:cw[i-1][j]));
//System.out.print(String.format("%.5f",cw[i][j])+" ");
}
//System.out.println();
}
double res = cw[n-1][m-1];
System.out.println(String.format("%.2f", res));
}
}
}