




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
题目题目 简述 Tcp IP 协议簇运作过程 包含 ARP ICMP IP TCP UDP 每个协议挑选 1 2 个代码情 景 简析协议内容的代码实现 TCP IP Transmission Control Protocol Internet Protocol 的简写 中译名为传输控制协议 因特网互联协议 又名网络通讯协议 是 Internet 最基本的协议 Internet 国际 互联网络的基础 由网络层的 IP 协议和传输层的 TCP 协议组成 TCP IP 定义 了电子设备如何连入因特网 以及数据如何在它们之间传输的标准 协议采用 了 4 层的层级结构 每一层都呼叫它的下一层所提供的协议来完成自己的需求 通俗而言 TCP 负责发现传输的问题 一有问题就发出信号 要求重新传输 直到所有数据安全正确地传输到目的地 而 IP 是给因特网的每一台联网设备规 定一个地址 IP IP 层接收由更低层 网络接口层例如以太网设备驱动程序 发来的数据包 并 把该数据包发送到更高层 TCP 或 UDP 层 相反 IP 层也把从 TCP 或 UDP 层 接收来的数据包传送到更低层 IP 数据包是不可靠的 因为 IP 并没有做任何事 情来确认数据包是否按顺序发送的或者有没有被破坏 IP 数据包中含有发送它 的主机的地址 源地址 和接收它的主机的地址 目的地址 高层的 TCP 和 UDP 服务在接收数据包时 通常假设包中的源地址是有效的 也可以这样说 IP 地址形成了许多服务的认证基础 这些服务相信数据包是从 一个有效的主机发送来的 IP 确认包含一个选项 叫作 IP source routing 可以 用来指定一条源地址和目的地址之间的直接路径 对于一些 TCP 和 UDP 的服 务来说 使用了该选项的 IP 包好像是从路径上的最后一个系统传递过来的 而 不是来自于它的真实地点 这个选项是为了测试而存在的 说明了它可以被用 来欺骗系统来进行平常是被禁止的连接 那么 许多依靠 IP 源地址做确认的服 务将产生问题并且会被非法入侵 TCP TCP 是面向连接的通信协议 通过三次握手建立连接 通讯完成时要拆除连接 由于 TCP 是面向连接的所以只能用于端到端的通讯 TCP 提供的是一种可靠的数据流服务 采用 带重传的肯定确认 技术来实现 传输的可靠性 TCP 还采用一种称为 滑动窗口 的方式进行流量控制 所谓 窗口实际表示接收能力 用以限制发送方的发送速度 如果 IP 数据包中有已经封好的 TCP 数据包 那么 IP 将把它们向 上 传送到 TCP 层 TCP 将包排序并进行错误检查 同时实现虚电路间的连接 TCP 数据 包中包括序号和确认 所以未按照顺序收到的包可以被排序 而损坏的包可以 被重传 TCP 将它的信息送到更高层的应用程序 例如 Telnet 的服务程序和客户程序 应用程序轮流将信息送回 TCP 层 TCP 层便将它们向下传送到 IP 层 设备驱 动程序和物理介质 最后到接收方 面向连接的服务 例如 Telnet FTP rlogin X Windows 和 SMTP 需要高度 的可靠性 所以它们使用了 TCP DNS 在某些情况下使用 TCP 发送和接收域 名数据库 但使用 UDP 传送有关单个主机的信息 主要特点 主要特点 1 TCP IP 协议不依赖于任何特定的计算机硬件或操作系统 提供开放的协 议标准 即使不考虑 Internet TCP IP 协议也获得了广泛的支持 所以 TCP IP 协议成为一种联合各种硬件和软件的实用系统 2 TCP IP 协议并不依赖于特定的网络传输硬件 所以 TCP IP 协议能够集成 各种各样的网络 用户能够使用以太网 Ethernet 令牌环网 Token Ring Network 拨号线路 Dial up line X 25 网以及所有的网络传输硬件 3 统一的网络地址分配方案 使得整个 TCP IP 设备在网中都具有惟一的地 址 4 标准化的高层协议 可以提供多种可靠的用户服务 代码实现 代码实现 include include define DEFAULT PORT 5050 define DATA BUFFER 1024 void main int argc char argv WSADATA wsaData SOCKET sClient int iPort DEFAULT PORT int iLen char buf DATA BUFFER struct sockaddr in ser if argc 2 printf Usage client server IP address n return memset buf 0 sizeof buf if WSAStartup MAKEWORD 2 2 return ser sin family AF INET ser sin port htons iPort ser sin addr s addr inet addr argv 1 sClient socket AF INET SOCK STREAM 0 if sClient INVALID SOCKET printf socket Failed d n WSAGetLastError return if connect sClient struct sockaddr return else iLen recv sClient buf sizeof buf 0 if iLen 0 return else if iLen SOCKET ERROR printf recv Failed d n WSAGetLastError return printf recv data from server s n buf closesocket sClient WSACleanup ARP 地址解析协议 即 ARP Address Resolution Protocol 是根据 IP 地址获取物 理地址的一个 TCP IP 协议 主机发送信息时将包含目标 IP 地址的 ARP 请求广 播到网络上的所有主机 并接收返回消息 以此确定目标的物理地址 收到返 回消息后将该 IP 地址和物理地址存入本机 ARP 缓存中并保留一定时间 下次 请求时直接查询 ARP 缓存以节约资源 地址解析协议是建立在网络中各个主机 互相信任的基础上的 网络上的主机可以自主发送 ARP 应答消息 其他主机收 到应答报文时不会检测该报文的真实性就会将其记入本机 ARP 缓存 由此攻击 者就可以向某一主机发送伪 ARP 应答报文 使其发送的信息无法到达预期的主 机或到达错误的主机 这就构成了一个 ARP 欺骗 ARP 命令可用于查询本机 ARP 缓存中 IP 地址和 MAC 地址的对应关系 添加或删除静态对应关系等 相 关协议有 RARP 代理 ARP NDP 用于在 IPv6 中代替地址解析协议 代码实现代码实现 include include packet32 h include pragma comment lib ws2 32 pragma comment lib packet define EPT ARP 0 x0806 定义了一些在构造包的时候要用到 的常量 define EPT IP 0 x0800 define ARP HARDWARE 0X0001 define ARP REPLY 0 x0002 define ARP REQUEST 0 x0001 pragma pack push 1 在定义结构的时候一顶要用到 pack push 1 和下面的 pack pop 否则你构造的结构的长度会有问题 typedef struct ethhdr 以太网头部 长度 14 unsigned char dst 6 目的的 MAC 地址 unsigned char src 6 源的 MAC 地址 unsigned short type 帧类型 ETHHDR PETHDHR typedef struct eth arphdr 以太网 arp 字段长度 28 unsigned short arp hrd 硬件类型 unsigned short arp pro 协议类型 unsigned char arp hln 硬件地址长度 6 unsigned char arp pln 协议地址长度 4 unsigned short arp op 回应还是请求 unsigned char arp sha 6 发送者 MAC 地址 unsigned long arp spa 发送者 IP unsigned char arp tha 6 接收者 MAC 地址 unsigned long arp tpa 接收者 IP ETH ARPHDR PETH ARPHDR typedef struct arp 整个 ARP 包的结构 ETHHDR ethhdr ETH ARPHDR eth arp ARP PARP pragma pack pop define Max Num Adapter 10 char AdapterList Max Num Adapter 1024 定义的网络适配器列表 int main int argc char argv LPADAPTER lpAdapter 0 LPPACKET lpPacket int i DWORD dwErrorCode WCHAR AdapterName 8192 WCHAR temp temp1 将 AdapterNames 的内容转 存到 AdapterList 时用 int AdapterNum 0 ULONG AdapterLength ARP arpPacket 定义的包结构实例 char szPktBuf 256000 用于存放包的内容 printf d n sizeof ETHHDR 这 3 行是我在测试结构长 度时用的 如果没有使用之 printf d n sizeof ETH ARPHDR 前说的 pack push 1 pack pop 长度就成了 14 32 printf d n sizeof ARP 48 与我们的 arp 包的格式不符 i 0 AdapterLength sizeof AdapterName if PacketGetAdapterNames char AdapterName return 1 temp AdapterName temp1 AdapterName while temp 0 temp 1 0 将 AdapterNames 的内容转存 到 AdapterList if temp 0 memcpy AdapterList i temp1 temp temp1 2 temp1 temp 1 i temp ICMP ICMP 是 Internet Control Message Protocol Internet 控制报文协议 它是 TCP IP 协议族的一个子协议 用于在 IP 主机 路由器之间传递控制消息 控 制消息是指网络通不通 主机是否可达 路由是否可用等网络本身的消息 这 些控制消息虽然并不传输用户数据 但是对于用户数据的传递起着重要的作用 代码实现代码实现 include include define IP RECORD ROUTE 0 x7 define DEF PACKET SIZE 32 缺省包长度 define MAX PACKET 1024 最大 ICMP 包长度 define MAX IP HDR SIZE 60 最大 IP 头长度 define ICMP ECHO 8 ICMP 回向次数 define ICMP ECHOREPLY 0 define ICMP MIN 8 最小 8 字节的包头 IP 头结构 typedef struct iphdr unsigned int h len 4 头长度 unsigned int version 4 IP 版本 unsigned char tos 服务类型 unsigned short total len 包的总长度 unsigned short ident 包标识身份 unsigned short frag and flags 标志 unsigned char ttl 包生命周期 unsigned char proto 协议类型 unsigned short checksum IP 校验 unsigned int sourceIP 源 IP unsigned int destIP 目标 IP IpHeader ICMP 头结构 typedef struct icmphdr BYTE i type 类型 BYTE i code 代码 USHORT i cksum 校验和 USHORT i id 标识符 USHORT i seq 序列号 ULONG timestamp 时间戳 IcmpHeader IP 头选项结构 当 socket 可选项设置成 IP OPTIONS 时使用该结构 typedef struct ipoptionhdr unsigned char code 可选类型 unsigned char len unsigned char ptr unsigned long addr 9 IP 地址 IpOptionHeader class CPingDlg ICMP 服务器封装成一个类 CPing class CPing public 设置 Ping 参数 void SetConfigure char host BOOL recordrout FALSE int size DEF PACKET SIZE 解析 IP 可选参数 void DecodeIPOptions char buf int bytes 清除 ICMP 包 void Cleanup Ping 函数 void Ping int timeout 1000 发送 ICMP 包的 Socket SOCKET m hSocket IpOptionHeader m ipopt SOCKADDR IN m addrDest 目的地址 SOCKADDR IN m addrFrom 源地址 char icmp data char recvbuf USHORT seq no char Ipdest int datasize BOOL m bRecordRout CPingDlg m dlg CPing CPingDlg dlg virtual CPing private 解析 ICMP 头结构 void DecodeICMPHeader char buf int bytes SOCKADDR IN from 校验数据 USHORT checksum USHORT buffer int size 填充 ICMP 数据 void FillICMPData char icmp data int datasize UDP UDP 是 User Datagram Protocol 的简称 中文名是用户数据包协议 是 OSI Open System Interconnection 开放式系统互联 参考模型中一种无连接的传输层协议 提供 面向事务的简单不可靠信息传送服务 IETF RFC 768 是 UDP 的正式规范 UDP 在 IP 报 文的协议号是 17 代码实现 代码实现 UDP h interface for the UDP class ifndef ZH DUP CE H define ZH DUP CE H if MSC VER 1000 pragma once endif MSC VER 1000 include WinSock h pragma pack push 1 UDP 客户端发送错误回调函数 typedef void CALLBACK ONZhUDPERROR CWnd int UDP 客户端接收数据回调函数 typedef void CALLBACK ONZhUDPRECV CWnd char buf int bufLen sockaddr class UDP public UDP virtual UDP public DWORD Open CWnd pWnd int localPort LPCTSTR remoteHost int remotePort DWORD Close void bool SendData const char pBuf int len BOOL IsSocketOpen void UDP 错误事件 ONZhUDPERROR m OnUdpError UDP 数据接收事件 ONZhUDPRECV m OnUdpRecv private SOCKET m UDPSocket struct sockaddr in m RemoteAddr 存储远程通讯地址 HANDLE m ExitThreadEvent 线程退出事件 CWnd m pOwnerWnd 存储父窗体句柄 BOOL m bIsOpen static UINT RecvThread LPVOID lparam pragma pack pop endif UDP cpp implementatio
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 食品生产企业物料平衡管理要点
- 环境科学与生态学知识应用题集
- 地理信息系统应用与实践知识重点
- 文化因素在大学英语课程体系中的渗透与创新
- 绿色供应链发展趋势与市场需求分析
- 工程预算书合作编制协议
- 数字创新与中国式产业链现代化路径探讨
- 真实情境问题创设对创新能力培养的实践探索
- 各行业客户群体特征表格
- 新时代劳动教育的内涵与目标体系
- UL1047标准中文版-2020绝缘电力系统设备UL标准中文版
- 公交车驾驶员职业素养与礼仪培训考核试卷
- 【MOOC】软件工程与实践导论-四川大学 中国大学慕课MOOC答案
- 2024新版《药品管理法》培训课件
- 2024-2030年中国酸枣行业市场销售模式及投资盈利预测报告
- 深圳2020-2024年中考英语真题复习专题01 语法填空(解析版)
- DB37-T 1389-2024钢箱梁顶推施工技术规范
- 全国爱肝日-中国肝硬化临床诊治共识意见知识讲座
- 大数据调研报告
- 临床执业助理医师技能考试试题及答案
- JJF(津) 139-2024 电动汽车公用充电设施统计抽样计量性能评价技术规范
评论
0/150
提交评论