网络预备知识

  1. Internet与TCP/IP协议
  1. Internet历史
  2. OSI模型与TCP/IP协议体系结构
  3. TCP/IP协议
  4. TCP和UDP协议
  1. TCP/IP网络编程——基础篇
  1. 预备知识
  2. 系统调用
  3. TCP服务器/客户端
  4. UDP服务器/客户端
  5. 常用网络调试工具介绍
  6. I/O模型和服务器模型
  1. TCP/IP网络编程——进阶篇
  1. 常见协议头分析
  2. 网络信息检索和套接字属性设置
  3. 网络超时检测
  4. 广播和组播
  5. UNIX域套接字
 
一、互联网的历史
-------------------------------------------------------------------------------------------------------------------------------------
二、网络的体系结构
网络采用分而治之的方法设计,将网络的功能划分为不同的模块,以分层的形式有机组合在一起。(分层)
 
每层实现不同的功能,其内部实现方法对外部其他层次来说是透明的。每层向上层提供服务,同时使用下层提供的服务
 
(1)网络的层次结构
[1]OSI7层模型(每层的作用)
  1. 物理层(Physical Layer)统一网络设备的设计规范
  2. 数据链路层(Data Link Layer)保证比特流传输正确(网卡驱动程序)
接受来自物理层的位流形式的数据,并封装成帧。同样,也将来自上一层的数据帧,拆装为位流形式的数据转发到物理层。有一定的纠错功能
  1. 网络层(Network Layer):选择最佳路径(路由器),定义了IP地址
  2. 传输层(Transport Layer)保证数据传输无误
  3. 会话层(Session Layer):提供包括“访问验证”和“会话管理”(会话的建立、控制、终止)
  4. 表示层(Presentation Layer)
提供压缩解压、加密解密、语法转换内码。使能 解读成正确的 数据
  1. 应用层(Application Layer)
它在其他6层工作的基础之上,为应用程序 提供访问网络的 接口
注意:OSI模型是一个理想化的模型,尚未有完整的实现(参考价值)
七层结构顺序
 
[2] TCP/IP四层模型(五层)
以下是5层模型
 
掌握每层的作用,与OSI模型的对应关系
 
(2)常见TCP/IP协议
TCP/IP协议
互联网协议族(英语:Internet Protocol Suite,缩写为IPS)是一个网络通讯模型,以及一整个网络传输
协议家族,为互联网的基础通讯架构。它常被通称为TCP/IP协议族(英语:TCP/IP Protocol Suite,
或TCP/IP Protocols),简称TCP/IP]。因为这个协议家族的两个核心协议,包括TCP(传输控制协议)和
IP(网际协议),为这个家族中最早通过的标准。由于在网络通讯协议普遍采用分层的结构,当多个层次的
协议共同工作时,因此又被称为TCP/IP协议栈(英语:TCP/IP Protocol Stack)
 
IETF 制定互联网的标准,数字越小制定的年代越早,它的所有协议标准称为RFC(任何人都可以提交自己的协议
提交给该组织进行检测)www.ietf.org
ITUT 国际电信联盟, 起源于1865,电报产生的年代,会员制。
 
应用层
TFTP 简单文本传输协议
HTTP:超文本传输协议,用于从WWW服务器传输超文本到本地浏览器的传输协议
DNS:域名解析协议(解析IP地址和域名之间的关系)
TELNET:远程登录协议 是Internet远程登录的标准协议和主要主要方式
SSH:安全外壳协议(Secure Shell)是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。
POP3:Post Office Protocol - Version 3邮局协议版本3邮件服务器向客户端发送邮件
SMTP:简单邮件传输协议,客户端向邮件服务器发邮件
SNMP:简单网络管理协议,主要用于管理网络设备,检测设备的信息
其中http是用来协议html文本的传输
DNS用来协议www.baidu.com与IP地址对应表的解析的传输(与dns服务器地址通讯)以下:
 
传输层
TCP:传输控制协议,是一个“可靠的”、 面向连结的传输机制,它提供一种可靠
的字节流保证数据完整、无损并且按顺序到达。
UDP:是一个 无连结的数据报协议。它是一个“尽力传递”(best effort)或者说
“不可靠”协议——不是因为它特别不可靠,而是因为它不检查数据包是否已经
到达目的地,并且不保证它们按顺序到达。
 
网络层
IP(核心): 协议为高层提供不可靠、无连接的数据报通信。 IP 协议提供的不可靠服务是指它不能保证 IP 数据报
能成功地到达目的地。IP协议是将多个交换网络连接起来,它在源地址和目的地址之间 传送一种称之为 数据包的东西,
专门负责对不同网络进行互联的。IPV4、IPV6
ICMP:网际控制消息协议(Internet Control Message Protocol)。ICMP处理在路由器和主机之间流通的错误和控制消息。
这些消息通常有TCP/IP网络支持软件本身(而不是用户进程)产生和处理。(ping)
IGMP:网际组管理协议(Internet Group Management Protocol)。用于多播。
 
数据链路层
ARP:地址解析协议(Address Resloution Protocol)。ARP把一个IPV4地址映射成一个硬件地址(物理地址)。局域网MAC,
RARP:反向地址解析协议(Reverse Address Resloution Protocol)。RARP把一个硬件地址映射成一个IPv4地址。
ARP攻击:
仅能在以太网(局域网如:机房、内网、公司网络等)进行。无法对外网(互联网、非本区域内的局域网)进行攻击。
ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞,攻击者只要持续不断的
发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击。
攻击者向电脑A发送一个伪造的ARP响应,告诉电脑A:电脑B的IP地址192.168.0.2对应的MAC地址是00-aa-00-62-c6-03,电脑A信以为真,
将这个对应关系写入自己的ARP缓存表中,以后发送数据时,将本应该发往电脑B的数据发送给了攻击者。同样的,攻击者向电脑B也发送一个
伪造的ARP响应,告诉电脑B:电脑A的IP地址192.168.0.1对应的MAC地址是00-02-aa-63-c5-02,电脑B也会将数据发送给攻击者。(中间人工具)
arp -a 显示局域网所有 IP 与 MAC 对应
 
-------------------------------------------------------------------------------------------------------------------------------------
三、TCP/IP协议通信模型
上图的路由器是二层交换机,去掉了ip协议头。
下图还差一个路由器
 
在TCP/IP四层模型的基础之上讨论,数据在网络节点之间的传递
(1)TCP/IP协议下的数据包( 数据帧的格式(网络传输最小单元)
在TCP/IP协议模型下,用户数据在经过每一层处理后都会记录一些信息,这些信息以消息头的方式层层封装再层层解包分析
 
(2)数据的打包和解包
打包:加包头的过程(压栈) 栈就是具有后进先出的 数据结构
解包:去包头的过程(弹栈) 栈就是具有后进先出的 数据结构
 
(3)TCP/IP的边界特性
1.操作系统边界特性:网络应用也协议分开,应用层为非OS软件,以下各层在实现上都属于OS
2.地址边界特性:网络层以上(包括应用层,传输层)的软件用IP地址,网络接口层的软件处理物理地址。
 
 
-------------------------------------------------------------------------------------------------------------------------------------
四、TCP和UDP协议
共同点:同为传输层协议
不同点:
TCP:有连接,可靠
UDP:无连接,不保证可靠
(1) TCP(即传输控制协议 字节流通信
ABCD -----> ABD DCBA AABBCCDD
1234 124(请求再发3) TCP自己排序 删除重复的报文。
是一种面向连接的传输层协议,它能提供高可靠性通信(即数据无误、数据无丢失、数据无失序、数据无重复到达的通信)
 
适用情况:
  1. 适合于对传输质量要求较高,以及传输大量数据的通信。
  2. 在需要可靠数据传输的场合,通常使用TCP协议
  3. MSN/QQ等即时通讯软件的用户登录账户管理相关的功能通常采用TCP协议
 
传输特点:全双工的面向连接的可靠的按序递交的无重复到达的 字节流通信
(2) UDP协议(用户数据报协议 数据报通信
是不可靠的无连接的协议。在数据发送前,因为不需要进行连接,所以可以进行高效率的数据传输。
 
适用情况:
  1. 发送小尺寸数据(如对DNS服务器进行IP地址查询时)64k以内
  2. 在接收到数据,给出应答较困难的网络中使用UDP。(如:无线网络)
  3. 适合于广播/组播式通信中。
  4. MSN/QQ/Skype等即时通讯软件的点对点文本通讯以及音视频通讯通常采用UDP协议
  5. 流媒体、VOD、VoIP、IPTV等网络多媒体服务中通常采用UDP方式进行实时数据传输
 
传输特点:全双工的、无连接的、不保证可靠性的 数据报通信
下图每个 数据报 不能超过64kb
 
-------------------------------------------------------------------------------------------------------------------------------------
数据封装
 
应用数据需要经过TCP/IP每一层处理之后才能通过网络传输到目的端。
每一层上都使用该层的 协议数据单元 PDU (Protocol Data Unit)彼此交换信息。不同层的PDU中包含有不同的信息,因此PDU在不同层被赋予了不同的名称。
如上层数据在传输层添加 TCP报头后得到的PDU被称为 Segment( 数据段 );
如上层数据在传输层添加 UDP报头后得到的PDU被称为 Datagram( 数据报 );
数据段被传递给网络层,网络层添加 IP报头得到的PDU被称为 Packet( 数据包 );
数据包被传递到数据链路层,封装 数据链路层报头得到的PDU被称为 Frame( 数据帧 );最后,帧被转换为比特,通过网络介质传输。
这种协议栈逐层向下传递数据,并添加报头和报尾的过程称为封装(打包)。
-------------------------------------------------------------------------------------------------------------------------------------
五、预备知识
1.Socket(套接字)
什么是套接字:
(1)是一个通用的网络编程接口 fd = socket()
(2)是一种特殊的文件描述符 (everything in Unix is a file) (套接字描述符)
获得文件描述符:open 、socket、 pipe
(3)文件IO的系统调用依然适用于网络(除了lseek)管道文件也不能用lseek的。
(4)并不仅限于TCP/IP协议
套接字的类型:
(1)流式套接字(SOCK_STREAM):TCP
(2)数据报套接字(SOCK_DGRAM):UDP
(3)原始套接字(SOCK_RAW):可以对较低层次协议如IP、ICMP直接访问。
Socket的位置:
介于应用和传输层之间的编程接口( 系统调用
2.IP地址
  1. IP地址作用:一台主机到网络的一个连接标识。
 
  1. IP地址的实质:IP地址为32位(IPv4)或者128位(IPv6)
 
  1. IP地址表示形式:点分十进制
将IP地址按字节转换成10进制中间以点隔开
01100000 01010000 11110000 11110000
96.80.240.240
 
<1>IP地址分类:
IP地址组成 网络号+地址号
Internet管理委员会 根据网络号的不同 定义了A、B、C、D、E 五类地址
A:通常分配给拥有大量主机的网络
B: 适用于结点比较多的网络
C:适用于结点比较少的网络
D:组播地址
E:保留的
 
<2>几个特殊的IP地址:
1)私有地址:私有地址可以自己组网时用,但不能在Internet网上用
A:10.0.0.0~10.255.255.255
B:172.16.0.0~172.131.255.255
C:192.168.0.0~192.168.255.255
 
2) 回送地址
127.0.0.1 ~ 127.255.255.254
A类网络地址127是一个保留地址,用于网络软件测试以及本地机进程间通信,叫做回送地址(loopback address)。
一旦使用回送地址发送数据,协议软件立即返回之,不进行任何网络传输。
注意:Ping 127.0.0.1,如果反馈信息失败,说明IP协议栈有错,必须重新安装TCP/IP协议
网线没插都没关系,因为达不到那一层的啦
3)广播地址
TCP/IP规定,主机号全为1的网络地址用于广播之用,叫做广播地址。所谓广播,指同时向同一子网所有主机发送报文。
255.255.255.255(全网段的广播IP地址)
 
4)主机地址
0.0.0.0 ,本机的IP地址集合(操作系统根据需求选择IP地址) (显示拥有的网络地址)包括广播地址
Unix 系统的 文件描述符 基本上也属于句柄
 
5)IP地址转换
“192.168.1.1”------有 的,一般我们写成字符串形式
把字符串转换为网络字节序的二进制值(大端嘚
inet_aton();
inet_addr();
把网络字节序的二进制值转换为字符串
inet_ntoa();
 
 
3.子网掩码
1)子网掩码的概念及作用 :
(1) 分离出 IP 地址中的网络部分与主机部分
(2) 基于子网掩码,管理员可以将网络进一步划分为若干子网
实质:子网掩码也是32bit, 一串1后跟随 一串0组成( 其他非法),其中1表示在IP地址中的网络号对应的位数,而0表示在IP地址中主机对应的位数。
 
2)为什么需要使用子网掩码
分离网络号:子网掩码判断两台计算机是否属于同一网段
第一步:本机的子网掩码与接受方主机的 IP 地址进行 ' 与 ' 运算,即可得到目标主机所在的网络号
第二步:将本机的子网掩码与本机的 IP 地址进行 ' 与 ' 运算,即可得到本机所在的网络号。
 
192.168.1.3 && 255.255.255.0 == 192.168.1.0 网络号
192.168.1.7 && 255.255.255.0 == 192.168.1.0 网络号
如果网络号相同,表明接受方在本网络上,那么可以通过相关的协议把数据包直接发送到目标主机;
如果网络号不同,表明目标主机在远程网络上,那么数据包将会发送给本网络上的路由器,由路由器将数据包发送到其他网络,直至到达目的地。
分离主机号:
将取 ' 反 ' 后的子网掩码与 IP 地址做 ' 与 ' 运算,将答案化为十进制便得到主机地址。
 
补充
1)标准子网掩码:
A类网络(1 - 126) 缺省子网掩码:255·0·0·0
B类网络(128 - 191) 缺省子网掩码:255·255·0·0
C类网络(192 - 223) 缺省子网掩码:255·255·255·0
 
2) 特殊的子网掩码
这些子网掩码的出现是为了把一个网络划分成多个网络。
 
4.端口号
意义:为了区分一台主机接收到的数据包应该转交给哪个进程(服务)来进行处理,使用端口号来区别
实质:实际上是16bit的整数
 
注意:TCP端口号与UDP端口号独立
只要传输层协议不同就可以端口号相同
 
端口号的使用:
(1)众所周知端口:1~1023(1~255之间为众所周知端口,256~1023端口通常由UNIX系统占用)
例如:SSH服务被22端口占用等等
 
(2)已登记端口:1024~49151 (其中有些端口号也被已经被注册)
做法通常指定端口大于5000。建议(8888, 6666, 9999)
在文件/etc/services中可以找到网络服务端口分配。
 
(3)动态或私有端口:49152~65535
操作系统自动分配的端口号
 
 
5.字节序
(1)主机字节序(HBO):
一个多字节整数在计算机内存中存储的字节顺序称为主机字节序。(HBO- Host Byte Order)
 
因为CPU的设计以及OS的实现(两者共同作用,CPU相同,OS不同,HBO也会不同),在不同的系统上会有不同的字节序类型。
分为大端序(Big-Endian)和小端序(Little-Endian)。
 
小端序:低序字节存储在低地址,将低字节存储在起始地址,称为“Little-Endian”字节序,Intel、AMD等采用的是这种方式;
大端序(big-endian)- 高序字节存储在低地址,将高字节存储在起始地址,称为“Big-Endian”字节序,由ARM、Motorola等所采用
 
存在的问题:HBO不同在传输多字节整数时存在的问题,数据可能不相等
(2)网络序(即大端字节序 )(NBO)
对于一个多字节整数,在网络上传输时要按照统一的字节顺序发送和接受,即网络字节序序(NBO - Network Byte Order)
 
从本地发送(send,write)一个整数值到网络上,需要HBO->NBO
从网络上读取(recv,read)一个整数值到本地,需要NBO ->HBO
 
 
(3)字节序转换函数:
1)主机字节序到网络字节序
u_long htonl (u_long hostlong); 32bit ip地址
u_short htons (u_short short); 16bit 端口号
 
2)网络字节序到主机字节序
u_long ntohl (u_long hostlong);
u_short ntohs (u_short short);
 
 
 
 
 
 
 
 
 
 
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值