在2018/12/15日重构,原转载文章以删除

在2019/1/11日更新

一.网络协议的分层以及传输流程


关于四层网络协议在Wireshark中对应的位置













































OSI中的层 功能 TCP/IP协议族
7 应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等
6 表示层 数据格式化,代码转换,数据加密 没有协议
5 会话层 解除或建立与别的接点的联系 没有协议
4 传输层 提供端对端的接口 TCP,UDP
3 网络层 为数据包选择路由 IP,ICMP,OSPF,EIGRP,IGMP,ARP
2 数据链路层 传输有地址的帧以及错误检测功能 SLIP,CSLIP,PPP,MTU
1 物理层 以二进制数据形式在物理媒体上传输数据 ISO2110,IEEE802,IEEE802.2

一个包传输的过程如下图

二.TCP和UDP的区别?


手机的主要功能只有两个–电话和短信,这两种方式的本质差别就是,打电话的时候要先“建立连接”(拨号),而短信不需要,建立连接需要花费一些时间,但也意味着更加可靠,我们在打电话的时候可以确保对方已经听明白。而短信发送后并不知道对方是否及时收到。
TCP协议是基于连接的,而UDP不需要连接。

用UDP查询DNS直接查询

用TCP查询DNS需要先建立3次握手,查询完后建立第4次握手(即结束)
TCP协议中的包在Wiresharkd的解析如下图

tip:
用TCP协议传送6个数据包如果丢了一个那么直需要重传丢失的那个数据包
用UDP协议传送6个数据包如果丢了一个那么需要全部重新传

三.TCP协议的一些点

<1>

Seq:表示数据段的序号
Len:该数据段的长度
Ack:确认号
MSS:Maximum Segment Size
MTU:数据包最大数据大小(MTU和MSS的解释在下面)
SYN:包含了Seq,Win,Len,MSS

<2>

建立连接:

1.客户端发送 SYN(SEQ=x)报文给服务器端,进入 SYN_SEND 状态。
2.服务器端收到 SYN 报文,回应一个 SYN (SEQ=y)ACK(ACK=x+1)报文,进入 SYN_RECV 状态。
3.客户端收到服务器端的 SYN 报文,回应一个 SYN(SEQ=X+1)ACK(ACK=y+1)报文,进入 Established 状态。
终止连接:

1.某个应用进程首先调用 close,称该端执行“主动关闭”(active close)。该端的 TCP 于是发送一个 FIN 分节,表示数据发送完毕。
2.接收到这个 FIN 的对端执行 “被动关闭”(passive close),这个 FIN 由 TCP 确认。
3.一段时间后,接收到这个文件结束符的应用进程将调用 close 关闭它的套接字。这导致它的 TCP 也发送一个 FIN。
4.接收这个最终FIN的原发送端 TCP(即执行主动关闭的那一端)确认这个 FIN。
既然每个方向都需要一个 FIN 和一个 ACK,因此通常需要4个分节。

<3>

由于TCP是双向的,在一个连接中双方都可以是发送方,所以各自维护了一个Seq号。
比如甲发送了“Seq:x Len:y”的数据段给乙,那么乙回复的确认号就是X=Y,这意味着他收到了x+y之前的所有字节,打个比方如下图52号包的Seq=5129,Len=1448,所以来自接收方的53号包的Ack=5129+1448=6577,表示收到了6577之前的所有字节。理论上,接收方回复的Ack号恰好就是等于发送方的下个Seq号,所以我们可以看到54号包的Seq也等于5129+1448=6577.

<4>

MSS和MTU用处
双方在建立连接的时候会把自己的MSS告诉对方,MMS加上TCP头和IP头的长度就得到MTU
发包的大小是有MTU较小的一方决定的,比如说客户端的MTU只有1500而服务端的MTU有9000那么服务端传送数据过来只能把数据包分割成6个包传送(分割包的工作是TCP协议在做)反过来一样。

四.FTP协议


FTP(File Transfer Protocal)是文件传输协议的简称。用于Internet上的控制文件的双向传输(说白了就是类似用来下载东西)。因为是明文传输如果用FTP来登录,用抓包工具Wireshark可以自己抓到明文的密码。


上图的意思是:要从IP=10.32.200.41,端口为208*256+185=53433连接你的数据端口(公式中的256为约定好的常数)

五.HTTP协议


HTTP协议就是超文本传输协议的简称。由于HTTP协议基于CTP,所以要用就要先建立三次握手。这里提一下HTTP协议也是明文传输用Wireshark也是可以抓到的,如果要安全可以用HTTPS协议,数据会被加密到”Encrupted Application Data”里,解密的密匙在服务端。由于HTTP协议特别常见用BurpUnlimited做题都做烂了就不做叙述了。

六.TFTP协议


TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69。

FTP&TFTP区别:


FTP 是完整、 面向会话、 常规用途文件传输协议。 TFTP 用作 bones bare - 特殊目的文件传输协议。
交互使用 FTP。 TFTP 允许仅单向传输的文件。
FTP 依赖于 TCP, 是面向, 连接并提供可靠的控件。 TFTP 依赖 UDP, 需要减少开销, 并提供几乎没有控件。
FTP 提供身份验证。 TFTP 不。
FTP 使用已知 TCP 端口号: 20 的数据和 21 用于连接对话框。 TFTP 用于 UDP 端口号 69 其文件传输活动。
因为 TFTP 不支持验证 WindowsNT FTP 服务器服务不支持 TFTP。

七.IP协议


由于内容过多重写一篇直接点我
参考文章&书籍
https://blog.csdn.net/chaoshenzhaoxichao/article/details/79785318

<Wireshark网络分析就这么简单>

  • Metasploit详解

    0x00.Metasploit体系框架 0x01.文件目录解析 核心文件包括data,modules,scripts,tools,plugins 1.data 该文件里常用的的功能在wordlists(字典)里面 2.modules 该文件夹里包括了msf最核心的几个文件: auxiliary(漏洞辅助模块一般是没有攻击载荷的漏洞攻击) Exploits(渗透攻击模块) Post(开发模块)...

    Metasploit详解
  • 如何释放存在EXE上的资源文件

    1.添加资源到项目中直接参考图片就行 2.生成EXE文件 3.下载ResourceHacker程序 4.把程序导入ResourceHacker中 5.使用FindResource函数提取PE资源类型为”SETIMG” LPCWSTR b = _T(“SETIMG”);HMODULE hLocalHostModule = GetModuleHandleA(NULL);HRSRC hRsrc =...

    如何释放存在EXE上的资源文件
  • 使用爬虫爆破海康监控

    起因 海康的监控死活不搞验证码,我就想着一个没验证码不是分分钟爆破进后台吗,而且海康的百分之99的监控默认登录用户名都是admin这让爆破变的更加简单了。当我实际上手的时候用BurpUnlimited测试的时候发现登录爆破实际要发送2次包而且2次包都是加密的(因为写这篇文章的时候没有具体的环境所以发包的图我就没截了,有环境的自行测试下吧),这就让发包爆破这个思路断了(可能是因为我菜)隔了一天...

    使用爬虫爆破海康监控
  • Windows API函数

    1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接WNetAddConnection2 创建同一个网络资源的连接WNetAddConnection3 创建同一个网络资源的连接WNetCancelConnection 结束一个网络连接WNetCancelConnection2 结束一个网络连接WNetCloseEnum 结束一次枚举操作WNetConne...

    Windows API函数