知识点1:分层结构
1、OSI七层模型和TCP四层模型
2、应用层:应用程序间沟通的层
例如:FTP(文件传输协议)、Telnet(远程登录协议)、HTTP(超文本传输协议)、TFTP(简单文件传输协议)等
3、传输层:提供进程间的数据传送服务
负责传送数据,提供应用程序端到端的逻辑通信
例如:TCP(传输控制流协议)、UDP(用户数据报协议)
4、网络层:提供基本的数据封包传送功能(数据报)
最大可能的让每个数据包都能够到达目的主机
例如:IP(网际协议)、ICMP(网际控制消息协议)、IGMP(网际组管理协议)等
路由器,三层交换机
5、链路层:负责数据帧的发送和接收(帧数据)
STP(生成树协议),RSTP(快速生成树协议)ARP(地址解析协议:IP->MAC),RARP(逆向地址解析协议:MAC—>IP)
网卡工作在链路层,二层交换机
6、物理层(bit流)
网络、光纤、双绞线,集线器(Hub)
注意:每层完成自己的任务,最终通过不同层次的处理完成数据的收发
知识点2:协议简介
1、IP协议特点
特点:
不可靠:它不能保证IP数据包能成功地到达它的目的地,仅提供尽力而为的传输服务
无连接:IP并不维护任何关于后续数据包的状态信息。每个数据包的处理是相互独立的。IP数据包可以不按发送顺序接收
IP数据包中含有发送它主机的IP地址(源地址)和接收它主机的IP地址(目的地址)
2、TCP协议简介
TCP是一种面向连接的,可靠的传输层通信协议,流式报文
功能:
提供不同主机上的进程间通信
特点
1、建立链接->使用链接->释放链接(虚电路)
2、TCP数据包中包含序号和确认序号
3、对包进行排序并检错,而损坏的包可以被重传
4、效率低,可靠性高
5、不支持0字节的报文
服务对象
需要高度可靠性且面向连接的服务
如HTTP、FTP、SMTP等
3、UDP协议
UDP是一种面向无连接的传输层通信协议,报文格式是用户数据报
功能:
提供不同主机上的进程间通信
特点
1、发送数据之前不需要建立链接
2、不对数据包的顺序进行检查
3、没有错误检测和重传机制
4、效率高,可靠性低
5、支持0字节的报文
服务对象
主要用于“查询—应答”的服务
如:NFS、NTP、DNS等
知识点3:MAC地址
MAC地址,用于标识网络设备,类似于身份证号,且理论上全球唯一
知识点4:IP地址
1、IP地址的组成
使用32bit,由{网络ID,主机ID}两部分组成
子网ID:IP地址中由子网掩码中1覆盖的连续位
主机ID:IP地址中由子网掩码中0覆盖的连续位
2、IP地址的分类
知识点5:回环地址
功能
主要是测试本机的网络配置,能ping通127.0.0.1说
明本机的网卡和IP协议安装都没有问题
注意
127.0.0.1~127.255.255.254中的任何地址都将回环到本地主机中
不属于任何一个有类别地址类,它代表设备的本地虚拟接口
知识点7:端口
TCP/IP协议采用端口标识通信的进程
用于区分一个系统里的多个进程
特点
1、对于同一个端口,在不同系统中对应着不同的进程
2、对于同一个系统,一个端口只能被一个进程拥有,一个进程可以有多个端口号
3、一个进程拥有一个端口后,传输层送到该端口的数据全部被该进程接收,同样,进程送交传输层的数据也通过该端口被送出
知识点八:字节序
端:低地址存放低字节,高地址存放高字节
大端:低地址存放高字节,高地址存放低字节
网络协议指定了通讯字节序—大端
#include<stdio.h>
int main(int argc, char const *argv[])
{
/* code */
union tmp
{
/* data */
int a; //4个字节
char ch; //1个字节
}tmp;
tmp.a=0x12345678;
if(tmp.ch==0x78)
{
printf("小端模式\n");
}
else if(tmp.ch==0x12)
{
printf("大端模式\n");
}
return 0;
}
知识点九:UDP编程
面向无连接的用户数据报协议,在传输数据前不需要先建立连接;目地主机的运输层收到UDP报文后,不需要给出任何确认
UDP特点
1、相比TCP速度稍快些,效率高,可靠性低
2、简单的请求/应答应用程序可以使用UDP
3、对于海量数据传输不应该使用UDP
4、广播和多播应用必须使用UDP
5、支持发送0字节的报文
UDP应用
DNS(域名解析)、NFS(网络文件系统)、RTP(流媒体)等
知识点十:Wireshark
10.1 过滤IP
ip.src eq 192.168.1.107 or ip.dst eq 192.168.1.107
ip.src==192.168.1.107 || ip.dst==192.168.1.107
10.2 .过滤端口
tcp.port eq 80 // 不管端口是来源的还是目标的都显示
tcp.port == 80
tcp.port eq 2722
tcp.port eq 80 or udp.port eq 80
tcp.dstport == 80 // 只显tcp协议的目标端口80
tcp.srcport == 80 // 只显tcp协议的来源端口80
udp.port eq 15000
10.3 过滤协议
tcp udp arp icmp http smtp ftp dns
10.4 过滤MAC
eth.dst == A0:00:00:04:C5:84 // 过滤目标mac
eth.src eq A0:00:00:04:C5:84 // 过滤来源mac
eth.dst==A0:00:00:04:C5:84
eth.dst==A0-00-00-04-C5-84
eth.addr eq A0:00:00:04:C5:84 // 过滤来源MAC和目标MAC都等于A0:00:00:04:C5:84的
知识点十一:TCP概述
1、面向连接的流式协议;可靠、出错重传、且每收到一个数据都要给出相应的确认
2、通信之前需要建立链接
3、服务器被动链接,客户端是主动链接
4、不能传0字节的报文
5、不支持广播和多播