传输层协议

目录

一、TCP /IP

1.TCP/IP简单介绍

2.TCP/IP分层

 3.TCP/IP和OSI模型的对比

4.TCP/IP协议

二、TCP协议介绍

1.TCP介绍

2.TCP特性

3.TCP报文格式

4.TCP三次握手(没有真实数据)为什么三次?两次报文都有去有回了

5.TCP四次挥手

三、UDP协议介绍

四、抓包分析wireshark


一、TCP /IP

1.TCP/IP简单介绍

TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。

2.TCP/IP分层

TCP/IP 4层模型(思科)

TCP/IP 5层模型(华为)

 3.TCP/IP和OSI模型的对比

相同点不通点
TCP/IP
  • 两者都是以协议栈的概念为基础
  • 协议栈中的协议彼此相互独立
  • 下层对上层提供服务
  • TCP/IP是先有协议,后有模型;
  • TCP/IP实际标准,只适用于TCP/IP网络;
  • 层次数量不同
OSI
  • OSI是先有模型;
  • OSI是国际标准,适用于各种协议栈;
  • 层次数量不同

4.TCP/IP协议

TCP/IP是一个Protocol Stack,包括TCP、IP、UDP、ICMP、RIP、TELNET、FTP、SMTP、ARP等许多协议。

TCP/IP协议
模型层协议 含义
物理层 IEEE802.3有线局域网(以太网)  
数据链路层 ppp:点到点协议
网络层ARP:地址解析协议 是将IP地址转换成物理mac地址 的协议 
RARP:逆地址解析协议 是根据物理mac地址转换成IP地址的协议
ICMP:网际控制报文协议ping   网络连通性检测   检测网络连通性
IGMP:网际组管理协议一个组播协议,该协议运行在主机和组播路由器之间
模型层 协议特点
传输层TCP :传输控制协议慢,可靠,稳定,安全
UDP:用户数据报协议快,不可靠,不稳定,不安全
模型层协议 端口号
 应用层
 
HTTP:超文本传输协议TCP的      80端口
HTTPs:超文本传输安全协议         加密TCP的     443端口
FTP:文件传输协议TCP的     20端口     21端口
TFTP:简单文件传输协议UDP的     69端口
SNMP:简单网络管理协议UDP的     161端口
SMTP:简单邮件传输协议 TCP的     25端口
telnet:远程登陆协议           明文 TCP的     23端口
ssh:安全的远程登陆协议    加密 TCP的      22端口
DNS :域名解析系统 TCP和UDP     的     53端口  
DHCP:动态主机配置协议UDP    的     67端口     68端口    

二、TCP协议介绍

1.TCP介绍

  • TCP是面向连接的、可靠的进程到进程通信的协议
  • TCP提供全双工服务,即数据可在同一时间双向传输

2.TCP特性

  1. 工作在传输层
  2. 面向连接协议
  3. 全双工协议
  4. 半关闭
  5. 错误检查
  6. 将数据打包成段,排序
  7. 确认机制
  8. 数据恢复,重传
  9. 流量控制,滑动窗口

3.TCP报文格式

源端口号(16)目标端口号(16)
序号(32)
确认号(32)
首部长度(4)保留(6)

U

R

G

A

C

K

P

S

H

R

S

T

S

Y

N

F

I

N

窗口大小(16)
校验和(16)紧急指针(16)
选项

扩:系统中有pid号和端口号

pid号:系统每开启一个进程 会自动分配一个pid号,方便系统管理,

端口号:来区别两个系统之间的进程

服务端:端口号约定不会轻易改变(iana组织规定的 前1024) 服务端会开启一个监听的进程()

客户端:端口号随机生成

端口号:0~65535

开启了一个应用为别人提供服务,这个应用就会处于监听状态。

报文格式解析:

  • 源端口、目标端口:计算机上的进程要和其他进程通信是要通过计算机端口的,而一个计算机端口某个时刻只能被一个进程占用,所以通过指定源端口和目标端口,就可以知道是哪两个进程需要通信。源端口、目标端口是用16位表示的,可推算计算机的端口个数为2^16个,即 65536 (0-65535)

  • 序列号:表示本报文段所发送数据的第一个字节的编号。在TCP连接中所传送的字节流的每一个字节都会按顺序编号。由于序列号由32位表示,所以每2^32个字节,就会出现序列号回绕,再次从0 开始 无限循环

  • 确认号:(ack)表示接收方期望收到发送方下一个报文段的第一个字节数据的编号。也就是告诉发送方:我希望你(指发送方)下次发送的数据的第一个字节数据的编号为此确认号:传输是否有问题?

  • 数据偏移/首部长度:表示TCP报文段的首部长度,共4位,由于TCP首部包含一个长度可变的选项部分,需要指定这个TCP报文段到底有多长。它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。该字段的单位是32位(即4个字节为计算单位),4位二进制最大表示15,所以数据偏移也就是TCP首部最大60字节

  • 控制位:确定两台主机处于什么状态

    URG(紧急位):表示本报文段中发送的数据是否包含紧急数据。后面的紧急指针字段(urgent pointer)只有当URG=1时才有效

    ACK(确认位):表示是否前面确认号字段是否有效。只有当ACK=1时,前面的确认号字段才有效。TCP规定,连接建立后,ACK必须为1,带ACK标志的TCP报文段称为确认报文段

    PSH(急切位):提示接收端应用程序应该立即从TCP接收缓冲区中读走数据,为接收后续数据腾出空间。如果为1,则表示对方应当立即把数据提交给上层应用,而不是缓存起来,如果应用程序不将接收到的数据读走,就会一直停留在TCP接收缓冲区中

    RST(重置位):如果收到一个RST=1的报文,说明与主机的连接出现了严重错误(如主机崩溃),必须释放连接,然后再重新建立连接。或者说明上次发送给主机的数据有问题,主机拒绝响应,带RST标志的TCP报文段称为复位报文段

    SYN(同步位):在建立连接时使用,用来同步序号。当SYN=1,ACK=0时,表示这是一个请求建立连接的报文段;当SYN=1,ACK=1时,表示对方同意建立连接。SYN=1,说明这是一个请求建立连接或同意建立连接的报文。只有在前两次握手中SYN才置为1,带SYN标志的TCP报文段称为同步报文段

    FIN(断开位):表示通知对方本端要关闭连接了,标记数据是否发送完毕。如果FIN=1,即告诉对方:“我的数据已经发送完毕,你可以释放连接了”,带FIN标志的TCP报文段称为结束报文段

  • 窗口大小:表示现在允许对方发送的数据量,也就是告诉对方,从本报文段的确认号开始允许对方发送的数据量,达到此值,需要ACK确认后才能再继续传送后面数据,由Window size value * Window size scaling factor(此值在三次握手阶段TCP选项Window scale协商得到)得出此值

  • 校验和:提供额外的可靠性紧急指针:标记紧急数据在数据字段中的位置

  • 选项部分:其最大长度可根据TCP首部长度进行推算。TCP首部长度用4位表示,选项部分最长为:(2^4-1)*4-20=40字节

4.TCP三次握手(没有真实数据)为什么三次?两次报文都有去有回了

1、PC1客户端想和PC2服务端建立连接

第一次握手PC1发送请求报文给PC2

发送seq(序列号随机的)=x 控制位SYN=1的报文。

第二次握手PC2回复PC1请求连接报文

SYN + ack (确认号) 报文

seq(序列号) = y #pc2随机生成的序列号

ack=x+1 #pc2 希望pc1 下次回复的时候,序号是x+1

控制位 SYN=1 请求连接

ACK=1 同意连接

第三次握手PC1 回复PC2同意连接的报文

ACK报文(确认报文)

seq = x+1 序号是从PC2那里得来的

ACK = 1 同意连接

ack = y + 1#希望下次发送真实数据时,报文的序列号y+1

5.TCP四次挥手

有限状态机(扩展)

  1. CLOSED 没有任何连接状态

  2. LISTEN 侦听状态,等待来自远方TCP端口的连接请求 (服务开启 http(进程) 80端口在帮进程 看着 有没有人找 http )

  3. SYN-SENT 在发送连接请求后,等待对方确认

  4. SYN-RECEIVED 在收到和发送一个连接请求后,等待对方确认

  5. ESTABLISHED 代表传输连接建立,双方进入数据传送状态

  6. FIN-WAIT-1 主动关闭,主机已发送关闭连接请求,等待对方确认

  7. FIN-WAIT-2 主动关闭,主机已收到对方关闭传输连接确认,等待对方发送关闭传输连接请求

  8. TIME-WAIT 完成双向传输连接关闭,等待所有分组消失

  9. CLOSE-WAIT 被动关闭,收到对方发来的关闭连接请求,并已确认

  10. LAST-ACK 被动关闭,等待最后一个关闭传输连接确认,并等待所有分组消失

  11. CLOSING 双方同时尝试关闭传输连接,等待对方确认

客户端先发送一个FIN给服务端,自己进入FIN_WAIT_1状态,这时等待接收服务端报文,该报文会有三种可能:

  • 只有服务端的ACK

  • 只有服务端的FIN

  • 基于服务端的ACK,又有FIN

三、UDP协议介绍

UDP协议

  • 无连接、不可靠的传输协议

  • 花费的开销小

UDP报文的首部格式

源端口号(16)目标端口号(16)
UDP长度(16)UDP校验和(16)

UDP长度:用来指出UDP的总长度,为首部加上数据

校验和:用来完成对UDP数据的差错校验,它是UDP协议提供的唯一的可靠机制

TCP和UDP的特性:

协议特性
TCP
  1. 工作在传输层

  2. 面向连接协议

  3. 全双工协议

  4. 半关闭

  5. 错误检查

  6. 将数据打包成段,排序

  7. 确认机制

  8. 数据恢复,重传

  9. 流量控制,滑动窗口

UDP
  1. 工作在传输层

  2. 提供不可靠的网络访问

  3. 非面向连接协议

  4. 有限的错误检查

  5. 传输性能高

  6. 无数据恢复特性

四、抓包分析wireshark

  1. 选择捕获接口。一般都是选择连接到Internet网络的接口,这样才可以捕获到与网络相关的数据。否则,捕获到的其它数据对自己也没有任何帮助。一般是

  2. 使用捕获过滤器。通过设置捕获过滤器,可以避免产生过大的捕获数据。这样用户在分析数据时,也不会受其它数据干扰。而且,还可以为用户节约大量的时间。

  3. 使用显示过滤器。通常使用捕获过滤器过滤后的数据,往往还是很复杂。为了使过滤的数据包再更细致,此时使用显示过滤器进行过滤

有混杂模式和普通模式两种模式

  1. 混杂模式:混杂模式就是接收所有经过网卡的数据包,包括不是发给本机的包,即不验证MAC地址。

  2. 普通模式:网卡只接收发给本机的包(包括广播包)传递给上层程序,其它的包一律丢弃。

一般来说,混杂模式不会影响网卡的正常工作,多在网络监听工具上使用。

1.停止抓取数据

 在这里想要的数据类型,还可以筛选控制位、标志位、查找源地址、源地址是 xxx 或目的地址是xxx 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值