tcpip最新复习要点.docx
- 文档编号:28758530
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:18
- 大小:21.91KB
tcpip最新复习要点.docx
《tcpip最新复习要点.docx》由会员分享,可在线阅读,更多相关《tcpip最新复习要点.docx(18页珍藏版)》请在冰豆网上搜索。
tcpip最新复习要点
第一章
1、Internet是以ARPANET网络为雏形建立的
2、现在Internet中广泛使用的TCP/IP协议族,其版本为V4
3、tcp/ip一般分为网络接口层,网际层,传输层和应用层四层
4、常用的http工作在tcp./ip的应用层层
5、ip地址属于tcp/ip中网际层的概念
6、传输层常用的两个协议是TCP和UDP
7、网络接口卡工作再tcp/ip的网络接口层
8、osi/rm开放系统互联参考模型共有7层由国际标准化组织提出
9、中国互联网信息中心是1997年6月3日组建的Internet管理和服务机构,行使我国互联网络信息中心的管理职责
10、rfc是指请求评价文档
第二章
1、按照覆盖的地理范围,计算机网络可以分为局域网,城域网和广域网三种
2、物理层常用的传输介绍有双绞线,同轴电缆,光纤和无线四种
3、物理层数据传输方式有模拟传输,数字传输,光波传输和无线电传输四种
4、在数据传输系统中,主要采用的数据编码技术有数字数据的模拟编码,数字数据的数字信号编码和模拟数据的数字信号编码三种
5、根据通信双方是否可以同时传输数据,通信可以分为单工通信,半双工通信和全双工通信三种通信方式
6、数据编码是指将数据表示成适当的信号形式,以便数据的传输和处理
7、在数据传输系统中,主要采用三种数据编码技术:
即数字数据的模拟编码,数字数据的数字信号编码和模拟数据的数字信号编码
8、常用的数字信号编码方式不归零,差分不归零,曼彻斯特和差分曼彻斯特等
第三章
1、一个ip地址由网络号和主机号两部分组成
2、Ip地址共分为5大类
3、一个ip地址用4个字节表示,最常用的一种表示格式是点分十进制
4、假设一个主机的ip地址为192.168.5.121,而子网掩码为255.255.255.248那么该主机的网络号部分(包括子网号部分)为192.168.5.120/29
5、以太网是利用Arp协议获得目的主机ip地址与Mac地址的映射关系
6、在转发一个ip数据包过程中,如果路由器发现该数据报报头中的ttl字段为0,那么,它首先将该数据报丢弃,然后向源主机发送ICMP报文
7、路由器选择算法工作在网际层,它负责确定对所受到的ip数据包应通过哪条传输线转发
8、路由表分为静态路由表和动态路由表两种,它们建立与维护方式不同
9、tcp/ip协议簇专门设计了用于地址解析的协议,其中ARP可以把一个ip地址映射成对应的物理地址,而对于无法保存ip地址的主机,RARP提供了从物理地址到ip地址的逆向地址映射
第四章
1、传输层主要提供了TCP和UDP两个常用协议
2、端口号用一个16位的二进制数表示
3、常用协议HTTP的端口号为80
4、Tcp可以提供面向连接的可靠的数据流服务。
而udp可以提供无连接的不可靠服务
第五章
1、DNS由域名空间,服务器和解析器三部分组成
2、顶级域名大致可以分为两类:
一类是组织性顶级域名另一类是地域性顶级域名,我国的顶级域名是CN。
3、在tcp/ip互联网中,电子邮件客户端程序向邮件服务器发送邮件使用SMTP协议,电子邮件客户端查看邮件服务器中自己的邮箱使用POP3协议,邮件服务器之间相互传递使用SMTP协议
4、ftp可以使用的四种文件类型是ASCII码文件,EBCDIC码文件,图像文件和本地文件。
5、在tcp/ip互联网中,www服务器与WWW浏览器之间的信息传递使用HTTP协议
6、URL由协议名称,主机名和目录与文件名三部分组成
问答题:
1、什么是tcp/ip
TCP/IP是网络中使用的基本的通信协议。
虽然从名字上看TCP/IP包括两个协议,传输控制协议(TCP)和网际协议(IP),但TCP/IP实际上是一组协议,它包括TCP、IP、UDP、ICMP、RIP、TELNET、FTP、SMTP、ARP、TFTP等许多协议,这些协议一起称为TCP/IP协议。
2、网络协议分层的好处
1)各层之间相互独立2)易于设计与实现3)易于维护
3、说明tcp/ip的分层结构和各层的功能
1)网络接口层负责将其之上的网络层要发送出去的数据发送到其下面的物理网络
2)网际层把源主机上的分组根据需要发送到互联网中的任意一台目标主机上
3)传输层完成两台主机上对应的应用进程之间的通信,
4)应用层向用户提供一组常用的应用程序,
4、简要说明tcp/ip与iso/osi之间的关系
Osi模型与tcp/ip模型都是以层次结构来定义协议栈的,尽管协议的层数不同,但层间功能的分配基本相似,相同点都有应用层、传输层、网络层。
都是下层服务上层。
不同点:
层数不同。
模型与协议出现的次序不同,TCP/IP先有协议,后有模型(出
现早),ISO/OSI先有模型,后有协议(出现晚)。
5、简述路由器的工作原理与功能
工作原理:
路由器接收到数据包,提取目标IP地址及子网掩码计算目标网络地址;根据目标网络地址查找路由表,如果找到目标网络地址就按照相应的出口发送到下一个路由器;如果没有找到,就看一下有没有默认路由,如果有就按照默认路由的出口发送给下一个路由器;如果没有找到就给源IP发送一个出错ICMP数据包表明没法传递该数据包;如果是直连路由就按照第二层MAC地址发送给目标站点。
功能:
网络互连、数据处理、网络管理
6、说明ip在tcp/ip协议栈中的地位与作用
Ip是Tcp/ip协议簇中最重要的协议,从协议体系结构来看,向下它屏蔽了不同物理网络的底层,向上它提供了一个逻辑上统一的互联网
7、Ip主要有哪些功能
将上层数据或同层的其他数据封装到ip数据包中
将ip数据包传送到最终目的地
为了使数据能够在链路上进行传输,对数据进行分段
确定数据报到达其他网络的路径
8、Ip有什么特点
Ip是一种无连接不可靠的数据包传输协议,
Ip互联网中的计算机没有主次之分,
Ip互联网没有确定的拓扑结构
在ip互联网中的任何一台主机都至少有一个独一无二的ip地址
在互联网中有ip地址的设备,不一定是计算机
9.、什么是端口号?
你认为端口号用来表示什么?
计算机服务或者是不同的进程都会有一个不同的端口号,程序到程序连接时候用的标识。
10、比较tcp与udp(重要,什么是TCP和什么是UDP两题)
TCP-有连接,所以握手过程会消耗资源,过程为可靠连接,不会丢失数据,适合大数据量交换
UDP-非可靠连接,会丢包,没有校验,速度快,无须握手过程
11、唯一标识网络中的通信的一个进程要用什么样的三元组?
本地协议、本地ip、本地端口号
12、什么是Windowssockets?
它就是定义了一套MicosoftWindows下网络编程接口。
它包含大量的库函数,以使程序员能充分地利用Windows消息驱动机制进行编程。
13、什么是套接口?
定义了一种可靠的面向连接的服务,实现了无差错无重复的顺序数据传输.数据报套接口定义了一种无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证可靠,无差错.
14、什么是网络字节顺序?
网络字节顺序NBO(NetworkByteOrder):
按从高到低的顺序存储,在网络上使用统一的网络字节顺序,可以避免兼容性问题。
15、开发网络程序要考虑哪些问题(重要)
A)并发环境下的网络编程
B)异构环境下的网络编程
C)阻塞与非阻塞通信
D)服务类型的选择
16、Winsock中四个数据格式转换函数htonl、htons、ntohl和ntohs的功能有什么不同?
Htonl:
将主机的无符号长整形数转换成网络字节顺序。
Htons:
将主机的无符号短整形数转换成网络字节顺序。
Ntohl:
将一个无符号长整形数从网络字节顺序转换为主机字节顺序。
Ntohs:
将一个无符号短整形数从网络字节顺序转换为主机字节顺序。
17、IP地址转换函数有哪两个?
它们各有什么功能?
Inet_addr():
将点分十进制数表示的IP地址转换为网络字节顺序的IP地址。
Inet_ntoa():
将网络字节顺序的IP地址转换为点分十进制数表示的IP地址。
特殊IP地址:
1、网络地址:
有效网络号和全0的主机地址组成,A取前8位,B取前16位,C取前24位
2、直接广播地址:
有效网络号和全1的主机地址组成,网络号相同的所有主机收到数据报
3、有限广播地址:
32位二进制全为1用于对本网广播通信,送往本网每一台主机
4、本网特定主机地址:
网络地址全为0和有效的主机地址,往本网主机号的主机发送
5、回送地址:
A类中网络地址为127为保留地址,用于网络软件测试or本机进程间通信
6、本网络本主机:
网络地址或主机地址全0表示本网络本主机,全1为一个广播地址
私有IP地址A:
10.0.0.1-10.255.255.254B:
172.13.0.1-...C:
192.168.0.1-...
编程题:
1、基于tcp的网络程序,其服务器端和客服端的工作流程如何?
a)服务端
i.使用WSAStatup()函数检查系统协议栈的安装情况
ii.使用socket函数创建服务器端通信的套接口
iii.使用bind()函数将创建的套接口与服务器地址绑定
iv.使用listen()函数使服务器套接口做好接收连接请求的准备
v.使用accept()函数接收来自客户端由connect发出的连接请求
vi.建立连接后使用send()函数发送数据或使用recv()函数接收数据
vii.使用closesocket()函数关闭套接口
viii.调用WSAcleanup结束windowsSocketsApi的调用
b)客户端
i.使用WSAStatup()函数检查系统协议栈的安装情况
ii.使用socket函数创建客户端通信的套接口
iii.使用connect()发出连接请求
iv.建立连接后使用send()函数发送数据或使用recv()函数接收数据
v.使用closesocket()函数关闭套接口
vi.调用WSAcleanup结束windowsSocketsApi的调用
1,、编写基于tcp的客户端/服务器程序,要求当客户机向服务器发出请求后,将客户机从键盘输入的字符串信息传输给服务器,然后由服务器将其小写转换成大写原样返回
小写-32==大写大+32==小写
1、说明udp网络程序的工作流程
服务端与客户端函数类似
1)使用WSAStatup()函数检查系统协议栈的安装情况
2)使用socket函数创建服务器端通信的套接口
3)使用bind()函数将创建的套接口与服务器地址绑定
4)使用sendto()发送数据也可以用recvfrom()接收数据
5)使用closesocket()函数关闭套接口
6)调用WSAcleanup结束windowsSocketsApi的调用
第十章
1、简单说明MFC中与网络程序设计有关的类
a)文件服务类
b)Internet服务器Api类
c)Internet服务类
d)Windows套接口类
程序设计类CAsyncSocket,和派生于CAsyncSocket的CSocket类
2、使用CSocket类设计网络程序有什么好处
CSocket类派生于CAsyncSocket类,它继承了父类中一些常用易懂的windowsSocketApi函数,并对CAsyncSocket中底层的较难控制的一些api进行了处理,为winsockapi提供了一个更高级别的编程接口,它通过MFCcarchive对象进行信息的接收和发送操作,使得套接口数据的输入同输出如同使用MFC一样简洁易用,同时它支持模块化的后台信息处理,解决了较难克服的多线程处理。
TCP代码服务器程序:
#include”winsock2.h”
#include”stdio.h”
#include”time.h”
#defineMAX_BUFFER1024
#defineDAYTIME_SERVER_PORT13
intmain()
{
SOCKETserverFd;
intconnectionFd,i=1;
structsockaddr_inservaddr;
chartimebuffer[MAX_BUFFER+1];
time_tcurrentTime;
WSADATAwsaData;
if(WSAtartup(MAKEWORD(2,2),&wsaData)==SOCKET_ERROR)
{
printf(“命令套接口初始化失败\n”);
return-1;
}
serverFd=socket(AF_INET,SOCK_STREAM,0);
if(serverFd==-1)
{printf(“socketerror\n”);
return(-1);
}
memset(&servaddr,0,sizeof(servaddr));
servaddr.sin_family=AF_INET;
servaddr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
servaddr.sin_port=htons(DAYTIME_SERVER_PORT);
bind(serverFd,(structsockaddr*)&servaddr,sizeof(servaddr));
listen(serverFd,5);
while
(1)
{
connectionFd=accept(serverFd,(structsockaddr*)NULL,NULL);
if(connectionFd>=0)
{currentTime=time(NULL);
sprintf(timebuffer,”%s\n”,ctime(¤tTime));
printf(“已有%d个访问者\n”,i++);
send(connectionFd,timebuffer,strlen(timebuffer),0);
closesocket(connectionFd);
}
}
return
(1);
}
客户端程序:
(头文件与服务器端一样,忽略)
intmain(void)
{
SOCKETconnectionFd;
intin;
structsockaddr_inservaddr;
chartimebuffer[MAX_BUFFER+1];
WSADATAwsaData;
if(WSAtartup(MAKEWORD(2,2),&wsaData)!
=0)
{
printf(“命令套接口初始化失败\n”);
return-1;
}
connectionFd=socket(AF_INET,SOCK_STREAM,0);
if(connectionFd==-1)
{
printf(“socketerror!
\n”);
return(-1);
}
memset(&servaddr,0,sizeof(servaddr));
servaddr.sin_family=AF_INET;
servaddr.sin_port=htons(DAYTIME_SERVER_PORT);
servaddr.sin_addr.S_un.S_addr=inet_addr(“127.0.0.1”);
if(connect(connectionFd,(structsockaddr*)&servaddr,sizeof(servaddr))==INVALID_SOCKET)
{
printf(“connect()Failed:
%d\n”,WSAGetLastError());
return(0);
}
while((in=recv(connectionFd,timebuffer,MAX_BUFFER,0))>0)
{
timebuffer[in]=0;
printf(“\n%s”,timebuffer);
}
closesocket(connectionFd);
return(0);
}
UDP服务器程序代码:
#include”winsock2.h”
#include”stdio.h”
#include”stdlib.h”
#defineDEFAULT_PORT5050//服务器端口号为5050
#defineBUFFER_LENGTH1024//接收数据缓冲区长度
voidmain()
{
intiPort=DEFAULT_PORT;
WSADATAwsaData;
SOCKETsSocket;
intiLen;//客户地址长度
intiSend;//发送的数据长度
intiRecv;//接受的数据长度
charsend_buf[]=”hello!
Iamaserver.”;//要发送给客户的信息
charrecv_buf[BUFFER_LENTGTH];//接收数据的缓冲区
structsockaddr_inser,cli;//本地地址和客户地址
printf(“-----------------------------------------\n”);
printf(“Serverwaiting\n”);
printf(“-----------------------------------------\n”);
if(WSAtartup(MAKEWORD(2,2),&wsaData)!
=0)
{
printf(“FailedtoloadWinsock.\n”);
return;
}
sSocket=socket(AF_INET,SOCK_DGRAM,0);//产生服务器端套接口
if(sSocket==INVALID_SOCKET)
{
printf(“socket()Failed:
%d\n”,WSAGetLastError());
return;
}
//以下建立服务器端地址
ser.sin_family=AF_INET;//htons()把一个双字节的主机字节顺序数转换为网络字节顺序
ser.sin_port=htons(iPort);//htonl()把一个主机字节顺序的数转换为网络字节顺序
ser.sin_addr.s_addr=htonl(INADDR_ANY);
if(bind(sSocket,(LPSOCKADDR)&ser,sizeof(ser))==SOCKET_ERROR)
{
printf(“bind()Failed:
%d\n”,WSAGetLastError());
return;
}
iLen=sizeof(cli);//
memset(recv_buf,0,sizeof(recv_buf));
//以下进入一个无限循环,进行数据接收和发送
while
(1)
{
//从客户端接收数据
iRecv=recvfrom(sSocket,recv_buf,BUFFER_LENGTH,0,(SOCKADDR*)&cli,&iLen);
if(iRecv==SOCKET_ERROR)
{
Printf(“recvfrom()Failed:
%d\n”,WSAGetLastError());
Break;
}
elseif(iRecv==0)
break;
else
{
printf(“recvfrom():
%s\n”,recv_buf);//输出接收到的数据
printf(“AcceptedclientIP:
[%s],port:
[%d]\n”,inet_ntoa(cli.sin_addr),ntohs(cli.sin_port));
//输出客户IP地址和端口号
}
//以下给客户发送信息
iSend=sendto(sSocket,send_buf,sizeof(send_buf),0,(SOCKADDR*)&cli,sizeof(cli));
if(iSend==SOCKET_ERROR)
{
printf(“sendto()Failed:
%d\n”,WSAGetLastError());
printf(“-----------------------------------------\n”);
break;
}
elseif(iSend==0)
break;
else
{
printf(“sendto()succeeded!
\n”);
printf(“-----------------------------------------\n”);
}
}
Closesocket(sSocket);
WSACleanup();
}
UDP客户端程序代码:
#include”winsock2.h”
#include”stdio.h”
#defineDEFAULT_PORT5050//服务器端口号为5050
#defineDATA_BUFFER1024//缓冲区长度
voidmain(intargc,char*argv[])
{
WSADATAwsaData;
SOCKETsClient;
intiPort=5050;
intiLen;//服务器地址长度
intiSend;//发送数据的长度
intiRecv;//接受数据的长度
charsend_buf[]=”hello!
Iamaclient.”;//要发送给服务器的信息
charrecv_buf[DATA_BUFFER];//接收数据的缓冲区
structsockaddr_inser;//服务器端地址
if(argc<2)//处理命令行中输入的参数
{
Printf(“Usage:
client[serverIPaddress]\n”);//提示在命令行中输入服务器IP地址
Return;
}
memset(recv_buf,0,sizeof(recv_buf));//接收数据的缓冲区初始化
if(WSAtartup(MAKEWORD(2,2),&wsaData)!
=0)
{
printf(“FailedtoloadWinsock.\n”);
return;
}
ser.sin_family=AF_INET;//建立服务器端地址
ser.sin_port=htons(iPort);
ser.sin_addr.s_addr=htonl(argv[1]);
sClient=socket(AF_INET,SOCK_DGRAM,0);//建立客户端数据报套接口
if(sClient==INVALID_SOCKET)
{
printf(“socket()Failed:
%d\n”,WSAGetLastError());
return;
}
iLen=siz
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- tcpip 最新 复习 要点