基本概念
【1】基础知识
【2】网络体系结构
(1)OSI开放系统互联模型
(2)TCP/IP协议族的体系结构:
【3】TCP和UDP
【4】Socket
【6】其他概念
【1】基础知识
1)计算机与网络发展的7个阶段
1、批处理(20世纪50年代):是指实现将用户每个数据装入卡带或者磁带。并有计算机按照一
定的顺序读取,是用户所要执行的这些程序和数据能够一并批量得到处理的方式。2、分时系统(20世纪60年代):是指多个终端(包含鼠标、键盘、显示器等输入
输出设备组
成,最初还包括打印机)与一台计算机连接,允许多个用户同时使用一台计算机的
系统。
特性:多路性、独占性、交互性和及时性。
3、计算机之间的通信(20世纪70年代)
4、计算机网络的产生(20世纪80年代)
5、互联网的普及(20世纪90年代)
6、以互联网技术为中心的时代(2000年)
7、从“单纯建立连接”到“安全建立连接”(2010年)
2)早期的ARPAnet使用网络控制协议
(Network Control Protocol,NCP)
不能互联不同类型的计算机和不同类型的操作系统,没有纠错功能
3)网络体系结构
指网络的层次结构和每层所使用协议的集合
4)通信协议
1、协议:一组控制数据通信的规则。三要素:①语法(包括数据格式、编码及信号电平等)②
语义(包括用于协议和差错处理的控制信息)③时序(包括速度匹配和排
序)。
2、标准:一致同意的规则。分类:①事实上的标准:实际情况或者习惯②合法标准:法律或者
规章制度
3、标准化组织:缓慢发展:ISO:国际标准化组织;ITU-T:国际电联-电信标准
部;ANSI:美
国国家标准化局;IEEE:电气电子工程师协会(主要是以太网、局域网方面
的);
EIA:电子工业协会(物理传输标准、光钎传输)。快速发展:论坛:帧中继
论坛、
ATM论坛;管理机构:FCC 联邦通信委员会。Internet标准:RFC
【2】网络体系结构
(1)OSI开放系统互联模型
1)ISO(国际标准化组织)制定了一个国际标准OSI(开放式通信系统互联参考模型,),对通信系统
进行了标准化。(理想模型,实际只有四层)
2)OSI模型将通信协议中必要的功能分成了7层,每个分层都接收有它下一层所提供的特定
服务,并
且负责为自己的上一层提供特定的服务。上下层之间进行交互时所遵循的约定叫做“接口”。同一
层之间的交互所遵循的约定叫做“协议”。
3)7层通信
1、应用层:指定特定应用的协议(比如发送和接受文件的软件按钮,发送者输入“早上好”并附
上收件人,按下发送按钮,接受者收到信息会将其存储在硬盘或者非易失
存储器
(数据不会因为断电而丢失的一种存储设备)上,这些都是在应用层上
的)。应用
程序:FTP、E-mail、Telnet
2、表示层:设备固有数据格式和网络标准数据格式的转换(接受者和发送者如果使用的邮件客
户端不一样,那么就会出现问题,如何实现用户之间的通信,那么就需要
在表示层
来起作用,使得在不同的客户端上拥有相同的网络格式)。数据格式定
义、数据转
换/加密
3、会话层:通信管理,负责建立或者断开通信连接(发送者一次性发送5份邮件,那么接受者如
何接受,是一次性接受所有的文件然后断开连接还是没接受一次就断开,
然后在此
进行,发送者同理)。建立通信进程的逻辑名字与物理名字之间的联系4、传输层:管理两个节点(互联的网络中断)之间的数据传输。负责可靠传输
(确保数据被可
靠地传送到目标地址)(确保发送者和接受者之间的通信,会话层负责决
定建立连
接和断开连接的时机,而传输层进行实际的建立和断开处理)。差错处
理/恢复,流
量控制,提供可靠的数据传输
5、网络层:地址管理与路由选择,作用:在网络相互连接的环境中,将数据从发送端主机发送
到接受端主机。数据分组、路由选择
6、数据链路层:互连设备之间传送和识别数据帧。数据组成可发送、接收的帧
7、物理层:以“0”、“1”代表的电压的高低、灯光的闪灭。界定连接器和网络的规格。传输物理信
号、接口、信号形式、速率
(2)TCP/IP协议族的体系结构:
1、应用层: TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet
2、传输层: TCP,UDP
3、网络层: IP,ICMP,RIP,OSPF,BGP,IGMP 传输单位为分组
4、网络接口与物理层: SLIP,CSLIP,PPP,ARP(解析mac地址),RARP,MTU ISO2110,
IEEE802.1,EEE802.2
备注: IP(Internetworking Protocol)网间协议
TCP(Transmission Control Protocol)传输控制协议
UDP(User Datagram Protocol)用户数据报协议 SMTP(Simple Mail Transfer Protocol)简单邮件传输协议 HTTP(Hypertext Transfer Protocol) 超文本传输协议 FTP(File Transfer Protocol)文件传输协议 ARP(Address Resolution Protocol)地址解析协议
TCP/IP协议是根据OSI模型发展而来的,(实际应用的结构)
TCP:用来检测网络传输中差错的传输控制协议。IP:专门负责对不同网络进行互联的互联网协议IP吧
【3】TCP和UDP
TCPUDP
(Transmission Control Protocol)(User Datagram Protocol)
即传输控制协议用户数据报协议
共同点同为传输层协议
不同点有连接,可靠无连接,不保证可靠
是一种面向连接的传输层协议,它能提供
高可靠性通信是一种面向连接的传输层协 是不可靠的无连接的协议。在数据发送前,因
描述议,它能提供高可靠性通信(即数据无误、为不需要进行连接,所以可以进行高效率的数
数据无丢失、数据无失序、数据无重复到据传输。
达的通信)
发送小尺寸数据(如对DNS服务器进行IP地址
适合于对传输质量要求较高,以及传输大 查询时)在接收到数据,给出应答较困难的网量数据的通信。在需要可靠数据传输的场 络中使用UDP。(如:无线网络)适合于广适用情况 合,通常使用TCP协议QQ等即时通讯软件播/组播式通信中。MSN/QQ/Skype等即时通的用户登录账户管理相关的功能通常采用 讯软件的点对点文本通讯以及音视频通讯通常
TCP协议 采用UDP协议流媒体、VOD、VoIP、IPTV等网络多媒体服务中通常采用UDP方式进行实时
数据传输
【4】Socket
1)概念:
是一个编程接口
是一种特殊的文件描述符 (everything in Unix is a file)
并不仅限于TCP/IP协议
面向连接 (Transmission Control Protocol - TCP/IP)
无连接 (User Datagram Protocol -UDP 和 Inter-network Packet Exchange
- IPX)
2)socket类型
发送缓冲区16K
接收缓冲区85K(默认)使用getsockopt获取使用setsockopt
设置
3)分类:
1、流式套接字(SOCK_STREAM)
提供了一个面向连接、可靠的数据传输服务,数据无差错、无重
复的发
送且按发送顺序接收。内设置流量控制,避免数据流淹没慢的接
收方。
数据被看作是字节流,无长度限制。
--->TCP
2、数据报套接字(SOCK_DGRAM)
提供无连接服务。数据包以独立数据包的形式被发送,不提供无
差错保证,
数据可能丢失或重复,顺序发送,可能乱序接收。
--->支持UDP,也支持其他的传输协议,并非为UDP设计。3、原始套接字(SOCK_RAW)
可以对较低层次协议如IP、ICMP直接访问。
【5】IP地址
1)查看指令: linux:ifconfig windows:ipconfig
2)概念:
IP地址是Internet中主机的唯一标识
IP地址为32位(IPv4)或者128位(IPv6)
每个数据包都必须携带目的IP地址和源IP地址,路由器依靠此信息为数据包选择路
由
IPV4的表示形式:常用点分十进制形式,如192.168.8.222,最后都会转换为一个32位的无符号整数。
3)IP地址分类(基于IPV4地址的前八位)
A类 0000 0000 - 0111 1111 0.x.x.x - 127.x.x.x
(8bit网络号 24bit主机号)2^24 - 2 (全0和全1不可用)
B类 1000 0000 - 1011 1111 128.x.x.x - 191.x.x.x
(16bit网络号 16bit主机号)2^16 - 2
C类 1100 0000 - 1101 1111 192.x.x.x - 223.x.x.x
(24bit网络号 8bit主机号)2^8 - 2
D类 1110 0000 - 1110 1111 224.x.x.x - 239.x.x.x 表示组播
地址
(不做网络号和主机号的划分)
E类 1111 0000 - 1111 1111 240.x.x.x - 255.x.x.x 属于保留测试
(剩余部分)
127.x.x.x 表示主机地址(本机回环地址)127.0.0.1(不经过网卡,网卡不能够抓取数据包)
192.168.x.x 表示局域网IP地址
0.0.0.0 本机地址自适配,会自动填写网卡对应的IP地址
192.168.8.x
192.168.8.0 表示网段或者网络地址
192.168.8.255 表示广播地址
4)子网掩码:可以表示当前IP地址的最大连接的主机的个数,用于子网划分 mask & IP地址留下的就是网络号(通常情况下 )
~mask & IP地址留下的就是主机号
A类:255.0.0.0 2~242^24
B类:255.255.0.02~16 2^16
C类:255.255.255.02~8 2^8
首先根据网络号进行查找,找到相应的群,然后根据主机号找到对应的具体IP主机。
5)局域网地址:
A类:10.xxx.xxx.xxx
B类:172.16.xxx.xxx ~ 172.31.xxx.xxx
C类:192.168.xxx.xxx
【6】其他概念
1)网关:作内外网隔离(两张网卡)NAT内外网映射
2)DNS:域名解析服务
(114.114.114.114)中国电信域名服务
(223.5.5.5)(223.6.6.6)阿里云域名服务
(8.8.8.8)谷歌域名服务
3)DDNS:动态域名解析服务(花生壳)
第一次域名查询 网关会向域名服务器 查询,之后网关会把IP地址写到自己的DNS映射。
DNS劫持:修改网关对应的DNS映射表,将映射网址修改到其他的钓鱼网站。4)端口号 :(在/etc/services文件内查看已经被占用的端口号)
为了区分一台主机接收到的数据包应该转交给哪个进程来进行处理,使用端口号来
区别
端口号一般由IANA (Internet Assigned Numbers Authority) 管理分类:
众所周知端口:1~1023(1~255之间为众所周知端口,256~1023端口通常由UNIX系统占用)
web服务器(80)
已登记端口:1024~49151 腾讯客户端(8080)
动态或私有端口:49152~65535
一般设置为 6666 7777 8888 9999 10000 10001 TCP和UDP各有一套端口号。
5)字节序
不同类型CPU的主机中,内存存储多字节整数序列有两种方法,称为主机字节序
(HBO):
小端序(little-endian) - 低序字节存储在低地址
将低字节存储在起始地址,称为“Little-Endian”字节序,Intel、AMD等采用的是这种方式;
大端序(big-endian)- 高序字节存储在低地址
将高字节存储在起始地址,称为“Big-Endian”字节序,由ARM、
Motorola等所采用
如何测试主机字节序:
方法1:使用指针
方法2: 使用file命令,file a.out 其中LSB的L代表小端存储
方法3:使用共用体
网络中传输的数据必须按网络字节序,即大端字节序
6)#include
①in_addr_t inet_addr(const char *cp); 将点分十进制IP地址转化为网络字节序的整型数据
②char *inet_ntoa(struct in_addr in); 将网络字节序的整型数据转化为点分十进制IP地址
例子:inet_addr("192.168.8.189");
③uint32_t htonl(uint32_t hostlong);将主机字节序转化为网络字节序
④uint16_t htons(uint16_t hostshort);
⑤uint32_t ntohl(uint32_t netlong);将网络字节序转化为主机字节序
⑥uint16_t ntohs(uint16_t netshort);
7)MAC地址,多用于局域网。根据MAC地址,当用户连入网络时,网关会生成MAC映射表,用于数据传输。