




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
TCP/IP学习笔记第一部分一、 TCP/IP结构: TCP/IP是一个四层协议,结构如下: 1、应用层:各种应用程序和协议,如Http、FTP等。 2、传输层:TCP和UDP TCP提供一种可靠的运输层服务,但UDP是不可靠的,不能保证数据报到正确到达目的地。 3、网络层:IP、IGMP、ICMP IP提供的是一种不可靠的服务,也就是尽可能块地把分组从源节点送到目的节点,但并不提供任何可靠性保证。ICMP是IP的附属协议,主要用来交换错误报文,IGMP是组管理协议,用来将UDP数据报多播到多个主机。 4、链路层:设备驱动程序和网卡等二、 IP地址和子网掩码 要学习TCP/IP协议,首先要提到的是IP地址。每台主机的IP地址是一个32位的二进制数。每个IP地址被分割位两部分:前缀和后缀。前缀用来确定计 算机从属的物理网络,后缀用来确定网络上单独的计算机。互联网上每一个物理网络都有一个唯一的值作为网络号,该网络号必须全球一致。 1、IP地址分类: IP地址分位五类:A类、B类、C类、D类、E类,其中A类、B类和C类为基本类,D类用于多播,E类属于保留类,现在不用。它们的格式如下(其中*代表网络号): A类:0* XXXXXXXX XXXXXXXX XXXXXXXX B类:10* * XXXXXXXX XXXXXXXX C类:110* * * XXXXXXXX D类:1110* XXXXXXXX XXXXXXXX XXXXXXXX E类:1111* XXXXXXXX XXXXXXXX XXXXXXXX 这样,A类地址的范围为:-55 B类地址的范围为:-55 C类地址的范围为:-55 D类地址的范围为:-55 E类地址的范围为:-66 几个特殊IP地址 网络地址:IP地址中主机地址全为0的地址,如。 广播地址:IP地址中主机地址全为1的地址,如55。 环回地址:,主要用于测试。2、子网掩码: 现在的主机都要求支持子网掩码,不再把IP地址看成为由单纯的一个网络号和一个主机号组成,而是把主机号再分成一个子网号和一个主机号。例如一个B类地址 (140.252),在剩下的16位中,8位用于子网号,8位用于主机号,这样就允许254个子网,每个子网就可以有254台主机。为了确定多少位用于子 网号,多少位用于主机号,这就要用到子网掩码了。其中值为1的位留给网络号和子网号,为0的位留给主机号。三、 数据包的封装和分用(解封装) 1、 封装: 应用程序TCP/UDPIP以太网 2、 分用: 以太网IPTCP/UDP应用程序 以太网首部(14)IP首部(20)TCP首部(20)应用数据以太网尾部(4)四、 IP首部: IP协议是TCP/IP协议族中最核心的协议,所有的TCP、UDP、ICMP和IGMP数据都以IP数据报格式传输。IP传输的两个特点:不可靠和无连接。IP协议并不保证数据报能成功地到达目的地,也不维护后续数据报的状态信息。必须由上层协议处理。 4位版本4位首部长度8位服务类型16位总长度(字节数)16位标识3位标志13位片偏移8位TTL8位协议16位首部检验和32位源IP地址32位目的IP地址IP首部定义:typedef struct ip_hdr unsigned char ip_verlen; / 4-bit 版本号 / 4-bit 首部长度 (in 32-bit words) unsigned char ip_tos; / IP 服务类型 unsigned short ip_totallength; / 总长度(字节数) /第一个32位 unsigned short ip_id; / 标识 unsigned short ip_offset; /3位标志,13位分片偏移, #define IP_DF 0x4000 /0x4000 dont fragment flag #define IP_MF 0x2000 /0x2000 more fragment flag #define IP_OFFMASK 0x1fff /0x1fff mask for fragmenting bits /第二个32位 unsigned char ip_ttl; / 生存时间 unsigned char ip_protocol; / 上层协议 unsigned short ip_checksum; / 首部检验和 /第三个32位 unsigned int ip_srcaddr; / 源IP地址 /第四个32位 unsigned int ip_destaddr; / 目的IP地址 /第五个32位 ip,IPV4_HDR, *PIPV4_HDR, FAR * LPIPV4_HDR;说明:ip_verlen前4位目前为4,表示为IPv4,后4位为5,表示首部长度为5X4=20个字节。 ip_tos为服务类型(type of service),aaabbbbc,aaa为优先权子字段,现在已被忽略,bbbb为TOS子字段,代表:最小时延、最大吞吐量、最高可靠性和最小费 用,c未使用必须为0。如果bbbb均为0,则表示为一般服务。目前大多数TCP/IP实现都不支持TOS特性。 ip_totallength为IP数据报的总长度,以字节为单位,因此理论最大值为65535,但实际是不可能的。 ip_id为唯一标识主机发送的每一个数据报,通常每发一份它的值就会加1。 ip_off前3位标志abc,a为保留,必须为0,b为不分片标志,c为更多分片标志。 ip_off后13位为分片位置,以8字节为单位计算。因此,除最后一个分片外,其他每个分片都希望是一个8字节倍数的数据,从而使后面的分片从8字节边界开始。 ip_ttl为IP报的生存周期,每经过一个路由器就减1,如果该字段为0,则该数据报被丢弃。 ip_protocol:1=ICMP,2=IGMP,3=TCP,17=UDP ip_checksum为数据报的首部检验和。计算方法如下:USHORT checksum(ip *ip, int size) unsigned long cksum=0; while (size 1) cksum += * (USHORT*)ip )+; size -= sizeof(USHORT); if (size) cksum +=(USHORT) *(UCHAR*)ip; cksum = (cksum 16) + (cksum & 0xffff); cksum += (cksum 16); return (USHORT)(cksum);ICMP、IGMP、TCP和UDP协议也采用相同的检验和算法。五、 端口号:TCP/UDP都使用一个16bit地端口号来表示不同地程序。 1、 知名端口:一般介于1255之间,例如:FTP的TCP端口号是21。 2、 临时端口,由于客户端对端口号一般并不关心,只需保证唯一就可以了,所以系统一般分配临时端口号。六、 链路层:(以以太网为例,地址为48bit) 1、 链路层的功能: 为IP模块发送和接收IP数据报 为ARP模块发送ARP请求和接收ARP应答 为RARP模块发送RARP请求和接收RARP应答 2、 以太网的封装,以太网IP数据报的封装在RFC 894中定义的:目的地址(6)源地址(6)类型(2)数据(46-1500),包括IP、ARP、RARPCRC(4) 对于ARP和RARP请求/应答数据报大小只有28字节,为了达到46字节的最小长度,必须在后面添加18字节的填充字节。七、 环回地址: 一般把分配给这个接口,并命名为localhost,一个发给环回接口的IP数据报不能在任何网络上出现。 1、 传给环回地址的任何数据均作为IP输入。 2、 传给广播地址和多播地址的数据报复制一份传给环回接口,然后送到以太网上。 3、 任何传给该主机IP地址的数据均送到环回接口。八、 最大传输单元MTU: 以太网对数据帧的长度都有限制,其最大值为1500。链路层的这个特性叫做最大传输单元MTU。如果一个IP数据报比MTU大,那IP层就必须进行分片, 把数据报分为若干片。如果两台主机间的通信要通过多个网络时,那么每个网络的链路层可能有不同的MTU。重要的不是两台主机所在网络的MTU,重要的是两 台主机路径中的最小MTU,它被成为路径MTU。九、 IP路由选择 如果目的主机与源主机直接相连或都在一个共享网络上,那么IP数据报就直接送到目的主机上。否则主机就会把数据报发送到一个默认的路由器上,由该路由器来 转发该数据报。IP层在内存中有一个路由表,当收到一份数据报并进行发送时,它都要对该表搜索一次。当数据报来自某个网络接口时,IP首先检查目的IP地 址是否为本机的IP地址之一或者IP广播地址。如果是这样,数据报就被送到由IP首部协议字段所指定的协议模块进行处理,否则如果IP层被设置为路由器的 功能,那么就对数据报进行转发,否则丢弃数据报。我们来看看路由表是什么:C:WINNTsystem32route PRINT=Interface List0x1 . MS TCP Loopback interface0x1000003 .00 08 02 ca 2d 11 . Intel 8255x-based Integrated Fast Ethernet=Active Routes:Network Destination Netmask Gateway Interface Metric目的地 掩码 网关 主机 6 4 1 1 4 4 14 55 155 55 4 4 1 4 4 155 55 4 4 1Default Gateway: 6=IP路由的主要功能: 1、搜索路由表,寻找与目的IP地址完全匹配的表目,如果找到,则将数据报发给该表目指定的下一站路由器或直接连接的网络接口。 2、搜索路由表,寻找能与目的网络号相匹配的表目,如果找到,则将数据报发给该表目指定的下一站路由器或直接连接的网络接口。 十、 TCP/IP协议头部结构体/ i386 is little_endian.#ifndef LITTLE_ENDIAN#define LITTLE_ENDIAN (1) /BYTE ORDER#else#error Redefine LITTLE_ORDER#endif/Mac头部,总长度14字节typedef struct _eth_hdrunsigned char dstmac6; /目标mac地址unsigned char srcmac6; /源mac地址unsigned short eth_type; /以太网类型eth_hdr;/IP头部,总长度20字节typedef struct _ip_hdr#if LITTLE_ENDIANunsigned char ihl:4; /首部长度unsigned char version:4, /版本 #elseunsigned char version:4, /版本unsigned char ihl:4; /首部长度#endifunsigned char tos; /服务类型unsigned short tot_len; /总长度unsigned short id; /标志unsigned short frag_off; /分片偏移unsigned char ttl; /生存时间unsigned char protocol; /协议unsigned short chk_sum; /检验和struct in_addr srcaddr; /源IP地址struct in_addr dstaddr; /目的IP地址ip_hdr;/TCP头部,总长度20字节typedef struct _tcp_hdrunsigned short src_port; /源端口号unsigned short dst_port; /目的端口号unsigned int seq_no; /序列号unsigned int ack_no; /确认号#if LITTLE_ENDIANunsigned char reserved_1:4; /保留6位中的4位首部长度unsigned char thl:4; /tcp头部长度
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 输电工人知识考试题库及答案
- 采油考试题库及答案
- 地铁站务考试题库及答案
- 中职艺术理论考试题库及答案
- 水厂调试合同5篇
- 2025年国际法与国际关系知识考试复习卷及答案
- 2025年贵州省安顺市辅警考试题库(附答案)
- 2025年贵港市人民检察院招聘警务辅助人员考试笔试试题(附答案)
- 护士资格证考试试题及答案
- 重量鉴定考试题目及答案
- 7.2做中华人文精神的弘扬者 课 件- 2024-2025学年七年级道德与法治下册 统编版
- 红领巾在新时代的使命与责任主题演讲稿范文
- 消防水池内有限空间安全施工方案
- 空间生产与社区发展-深度研究
- SMT工艺制程详解
- 大连理工大学《大学计算机高级基础》2023-2024学年第二学期期末试卷
- 校园内操场的智能化设施布局规划
- 国能日新的光功率预测系统培训
- 武则天一生与武周王朝历史介绍课件
- 英语词根词缀记忆大全
- DB45T 2473-2022 消防设施维护保养规程
评论
0/150
提交评论