东北大学计算机网络思考题答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机网络实验报告
软件学院
实验一思考与练习
一、选择
1)B
2)C
3)B
4)A
5)B
6)D
7)B
8)B
9)A
10)C
二、问答题
1)简述ARP协议工作原理
ARP是Address Resolution Protocol(地址转换协议)的简称,是TCP IP协议中最底层的协议之一。它的作用是完成IP地址到MAC(物理地址)的转换。
比如a机要与b机通讯,在局域网中处在数据链路层,这个层之间的主机互相通讯是通过mac地址互相区分的。所以主机a与主机b通讯,主机a 知道主机b的ip地址是不能通讯的。那么,主机a就要用arp 协议,通过广播的方式去寻找主机b的mac地址。当主机b 接收到arp的广播后就会主动与主机a。联系并告知主机a主机b的mac地址是什么。这样主机a知道了主机b的mac地址后就可以顺利的与主机b通讯了。
2)简述如何使用ping命令来判断网络的联通性
①使用ipconfig /all观察本地网络设置是否正确;
②. Ping 127.0.0.1,127.0.0.1 回送地址Ping回送地址是为了检查本地的TCP/IP协议有没有设置好;
③. Ping本机IP地址,这样是为了检查本机的IP地址是否设置有误;
④. Ping本网网关或本网IP地址,这样的是为了检查硬件设备是否有问题,也可以检查本机与本地网络连接是否正常;(在非局域网中这一步骤可以忽略)
⑤. Ping远程IP地址,这主要是检查本网或本机与外部的连接是否正常
3)简述常用的网络命令有哪些?各自功能是什么?
Ping命令
Ipconfig命令
Arp命令
Netstat命令
Tracert命令
Route命令
实验二程序设计
实验1编写Tcp服务器与客户端程序,服务器程序在客户端连接后输出客户端信息(IP,端口号)
客户端
#include
#include
#pragma comment(lib,"ws2_32.lib")
void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
SOCKET sockC;
SOCKADDR_IN addrC;
int len;
wVersionRequested=MAKEWORD(2,2);
if((err=WSAStartup(wVersionRequested,&wsaData))!=0)
return;
if(LOBYTE(wsaData.wVersion)!=2||HIBYTE(wsaData.wVersion)!=2) {
WSACleanup();
return;
}
sockC=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
addrC.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
addrC.sin_family=AF_INET;
addrC.sin_port=htons(6000);
len=sizeof(SOCKADDR);
connect(sockC,(SOCKADDR *)&addrC,sizeof(addrC));
closesocket(sockC);
WSACleanup();
}
服务端
#include
#include
#pragma comment(lib,"ws2_32.lib")
void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
SOCKET sockSrv;
SOCKET sockConn;
SOCKADDR_IN addrSrv;
SOCKADDR_IN addrClient;
int len;
wVersionRequested=MAKEWORD(2,2);
if((err=WSAStartup(wVersionRequested,&wsaData))!=0) return;
if(LOBYTE(wsaData.wVersion)!=2||HIBYTE(wsaData.wVersion)!=2) {
WSACleanup();
return;
}
sockSrv=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000);
bind(sockSrv,(SOCKADDR *)&addrSrv,sizeof(SOCKADDR));
listen(sockSrv,5);
len=sizeof(SOCKADDR);
while(1)
{
sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len); printf("IP:%s\nPort:%d\n",inet_ntoa(addrClient.sin_addr),ntohs(addr