目录

小知识点:

三次握手:

状态:

tcpdump:

一:命令介绍:

二:命令选项:

tcpdump的表达式:

使用python扫描LAN工具:

subprocess模块

arp协议

arp病毒:

ICMP协议:

如果ping不通可能有什么原因:


小知识点:

负载均衡工作在第四层和第七层

IP地址:点到点

端到端:就是端口号到端口号

服务进程占用端口号

socket:槽,对接的接口

网络socket:ip+port --》192.168.0.1:80

UDP:用户数据报协议,(http,ftp,ssh,mysql)

TCP:传输控制协议, (qq,DNS,dhcp)

DNS平常使用UDP,但是两台电脑传输数据时,主DNS服务器和从DNS服务器使用UDP

TCP

端口号16+16

端口号的范围:2^16=0-65536

系统和里面常用的端口是0~1023 系统预留和常用的经典端口号(ssh 22;http 80)

liunx里面/etc/service有端口号

seq序列号:每个报文的字节数开头第一个字节的位置

ack确认号:下一个报文的序列号

6个控制位:

urgent 紧急位

ACK 确认位

push 急迫位

reset 重置位(之前建立过连接,现在失效了,现在重新建立连接)

syn 同步位(需要和别人建立连接)

fin 终止位 (表示想和人家断开)

16位窗口大小:滑动窗口的大小

三次握手:

状态:

CLOSED:初始状态,表示TCP连接是“关闭着的”或“未打开的”。

LISTEN :表示服务器端的某个SOCKET处于监听状态,可以接受客户端的连接。

SYN_RCVD :表示服务器接收到了来自客户端请求连接的SYN报文。在正常情况下,这个状态是服务器端的SOCKET在建立TCP连接时的三次握手会话过程中的一个中间状态,很短暂,基本上用netstat很难看到这种状态,除非故意写一个监测程序,将三次TCP握手过程中最后一个ACK报文不予发送。当TCP连接处于此状态时,再收到客户端的ACK报文,它就会进入到ESTABLISHED 状态。

SYN_SENT :这个状态与SYN_RCVD 状态相呼应,当客户端SOCKET执行connect()进行连接时,它首先发送SYN报文,然后随即进入到SYN_SENT 状态,并等待服务端的发送三次握手中的第2个报文。SYN_SENT 状态表示客户端已发送SYN报文。

ESTABLISHED :表示TCP连接已经成功建立。

FIN_WAIT_1 :这个状态得好好解释一下,其实FIN_WAIT_1 和FIN_WAIT_2 两种状态的真正含义都是表示等待对方的FIN报文。而这两种状态的区别是:FIN_WAIT_1状态实际上是当SOCKET在ESTABLISHED状态时,它想主动关闭连接,向对方发送了FIN报文,此时该SOCKET进入到FIN_WAIT_1 状态。而当对方回应ACK报文后,则进入到FIN_WAIT_2 状态。当然在实际的正常情况下,无论对方处于任何种情况下,都应该马上回应ACK报文,所以FIN_WAIT_1 状态一般是比较难见到的,而FIN_WAIT_2 状态有时仍可以用netstat看到。

FIN_WAIT_2 :上面已经解释了这种状态的由来,实际上FIN_WAIT_2状态下的SOCKET表示半连接,即有一方调用close()主动要求关闭连接。注意:FIN_WAIT_2 是没有超时的(不像TIME_WAIT 状态),这种状态下如果对方不关闭(不配合完成4次挥手过程),那这个 FIN_WAIT_2 状态将一直保持到系统重启,越来越多的FIN_WAIT_2 状态会导致内核crash。

TIME_WAIT :表示收到了对方的FIN报文,并发送出了ACK报文。 TIME_WAIT状态下的TCP连接会等待2*MSL(Max Segment Lifetime,最大分段生存期,指一个TCP报文在Internet上的最长生存时间。每个具体的TCP协议实现都必须选择一个确定的MSL值,RFC 1122建议是2分钟,但BSD传统实现采用了30秒,Linux可以cat /proc/sys/net/ipv4/tcp_fin_timeout看到本机的这个值),然后即可回到CLOSED 可用状态了。如果FIN_WAIT_1状态下,收到了对方同时带FIN标志和ACK标志的报文时,可以直接进入到TIME_WAIT状态,而无须经过FIN_WAIT_2状态。(这种情况应该就是四次挥手变成三次挥手的那种情况)

CLOSING :这种状态在实际情况中应该很少见,属于一种比较罕见的例外状态。正常情况下,当一方发送FIN报文后,按理来说是应该先收到(或同时收到)对方的ACK报文,再收到对方的FIN报文。但是CLOSING 状态表示一方发送FIN报文后,并没有收到对方的ACK报文,反而却也收到了对方的FIN报文。什么情况下会出现此种情况呢?那就是当双方几乎在同时close()一个SOCKET的话,就出现了双方同时发送FIN报文的情况,这是就会出现CLOSING 状态,表示双方都正在关闭SOCKET连接。

CLOSE_WAIT :表示正在等待关闭。怎么理解呢?当对方close()一个SOCKET后发送FIN报文给自己,你的系统毫无疑问地将会回应一个ACK报文给对方,此时TCP连接则进入到CLOSE_WAIT状态。接下来呢,你需要检查自己是否还有数据要发送给对方,如果没有的话,那你也就可以close()这个SOCKET并发送FIN报文给对方,即关闭自己到对方这个方向的连接。有数据的话则看程序的策略,继续发送或丢弃。简单地说,当你处于CLOSE_WAIT 状态下,需要完成的事情是等待你去关闭连接。

LAST_ACK :当被动关闭的一方在发送FIN报文后,等待对方的ACK报文的时候,就处于LAST_ACK 状态。当收到对方的ACK报文后,也就可以进入到CLOSED 可用状态了。

CLOSING状态:

产生的原因是客户端和服务端同时关闭

tcpdump:

是什么?解决什么问题?谁使用?

liunx里面的一个命令,网络流量监控工具,监控网卡,解决网络上的问题,例如:数据是否到达,里面是否有我们想要的数据;进行故障排除个分析

ICMP协议:互联网网络控制协议,控制网络;网络通不通,主机是否可达,路由器是否可以使用

一:命令介绍:

tcpdump,用简单的语言概括就是dump the traffic on a network,是一个运行在linux平台可以根据使用者需求对网络上传输的数据包进行捕获的抓包工具,windows平台有sniffer等工具,tcpdump可以将网络中传输的数据包的“包头”全部捕获过来进程分析,其支持网络层、特定的传输协议、数据发送和接收的主机、网卡和端口的过滤,并提供and、or、not等语句进行逻辑组合捕获数据包或去掉不用的信息。

命令选项和捕获主机对到主机的数据包:

二:命令选项:

-a #将网络地址和广播地址转变成名字 -A #以ASCII格式打印出所有分组,并将链路层的头最小化 -b #数据链路层上选择协议,包括ip/arp/rarp/ipx都在这一层 -c #指定收取数据包的次数,即在收到指定数量的数据包后退出tcpdump -d #将匹配信息包的代码以人们能够理解的汇编格式输出 -dd #将匹配信息包的代码以c语言程序段的格式输出 -ddd #将匹配信息包的代码以十进制的形式输出 -D #打印系统中所有可以监控的网络接口 -e #在输出行打印出数据链路层的头部信息 -f #将外部的Internet地址以数字的形式打印出来,即不显示主机名 -F #从指定的文件中读取表达式,忽略其他的表达式 -i #指定监听网络接口 -l #使标准输出变为缓冲形式,可以数据导出到文件 -L #列出网络接口已知的数据链路 -n #不把网络地址转换为名字 -N 不输出主机名中的域名部分,例如www.baidu.com只输出www -nn #不进行端口名称的转换 -P #不将网络接口设置为混杂模式 -q #快速输出,即只输出较少的协议信息 -r #从指定的文件中读取数据,一般是-w保存的文件 -w #将捕获到的信息保存到文件中,且不分析和打印在屏幕 -s #从每个组中读取在开始的snaplen个字节,而不是默认的68个字节 -S #将tcp的序列号以绝对值形式输出,而不是相对值 -T #将监听到的包直接解析为指定的类型的报文,常见的类型有rpc(远程过程调用)和snmp(简单网络管理协议) -t #在输出的每一行不打印时间戳 -tt #在每一行中输出非格式化的时间戳 -ttt #输出本行和前面以后之间的时间差 -tttt #在每一行中输出data处理的默认格式的时间戳 -u #输出未解码的NFS句柄 -v #输出稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息 -vv#输出相信的保报文信息

tcpdump的表达式:

表达式是一个正则表达式,tcpdump利用它作为过滤报文的条件,如果一个报文满足表达式的条件,则这个报文将会被捕获。如果没有给出任何条件,则网络上所有的信息包 将会被截获,在表达式中一般如下几种类型的关键字:

a):关于数据类型的关键字:

包括host、port、net,例如host 192.168.1.1表示这是一台主机,net 192.168.0.0表示这是一个网络地址,port 22指明端口号是22,如果没有指明类型,则默认的类型是host。

b):数据传输方向的关键字:

包括src、dst、dst or src、dst and src,这些关键字指明了传输的方向,比如src 192.168.1.1说明数据包源地址是192.168.1.1,dst net 192.168.0.0指明目的网络地址是192.168.0.0,默认是监控主机对主机的src和dst,即默认监听本机和目标主机的所有数据。

c):协议关键字:

包括ip、arp、rarp、tcp、udp等,

d):其他关键字:

运算类型的:or、and、not、!

辅助功能型的:gateway、less、broadcast、greater

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode ##并没有输出详细的信息,想看详细的使用-v -vv listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes ## 2847 packets captured ## 2847 packets received by filter ## 0 packets dropped by kernel

scping=subprocess.run("ping 192.168.2.132 -c 4",shell="True",stdout=subprocess.PIPE,stderr=subprocess.PIPE)

ip = subprocess.run(f"ping -c 1 -w 1 192.168.2.{i}",shell=True,stdout.subprocess.PIPE,stderr.subprocess.PIPE)

使用python扫描LAN工具:

python调用liunx的命令:

os模块

os.mkdir("/..")

subprocess模块

subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, capture_output=False, shell=False, cwd=None, timeout=None, check=False, encoding=None, errors=None, text=None, env=None, universal_newlines=None)

  • args:表示要执行的命令。必须是一个字符串,字符串参数列表。
  • stdin、stdout 和 stderr:子进程的标准输入、输出和错误。其值可以是 subprocess.PIPE(保存输入输出)、subprocess.DEVNULL(不输出内容)
  • timeout:设置命令超时时间。如果命令执行时间超时,子进程将被杀死,并弹出 TimeoutExpired 异常。
  • check:如果该参数设置为 True,并且进程退出状态码不是 0,则弹 出 CalledProcessError 异常。


scp=subprocess.run("ping 192.168.1.111 -c 4",shell="True",stdout=subprocess.PIPE,stderr=subprocess.PIPE,check="False") scp.returncode ##查看代码是否执行成功 ############################################################## #!/usr/bin/python """ # Author: lkong # Created Time : 2022-07-23 16:06:53 5 6 # File Name: scan.py 7 # Description: 8 9 """ 10 import subprocess 11 use_ip=[] 12 unuse_ip=[] 13 for i in range(1,11): 14 ip = subprocess.run(f"ping -c 1 -w 1 192.168.2.{i}",shell=True,stdout=subproc ess.PIPE,stderr=subprocess.PIPE) 15 if ip.returncode == 0: 16 use_ip.append(f'192.168.2.{i}') 17 else: 18 unuse_ip.append(f'192.168.2.{i}') 19 20 print(f'正在使用的代码如下:\n{use_ip}') 21 print(f'没有使用的代码如下:\n{unuse_ip}')

查看liunx系统里面的协议和其端口

dns---》arp(域名解析得到IP地址后就地址解析得到mac地址)

arp协议

地址解析协议:没有对应端口号,工作在网络层,ip--》mac

arp缓存表在pc机和交换机上面

arp在工作的时候有两种类型的包

  1. arp request
  2. arp response

封装的角度去理解(PC机,交换机,路由器)

源IP地址和目的地址

arp封装之后:

然后进行arp广播

交换机会帮我们进行转发

得到的arp response包

arp病毒:

不断给交换机发送错误的arp response包

解决办法:静态绑定ip和mac地址就不会被干扰了

arp -s ip mac

pc机:火绒

ICMP协议:

互联网消息控制协议:网络通不通,主机是否可达,路由是否可用,用来探路的

ping:-s数据包大小;-c数量;-i时间间隔;-w超时时间

看网络质量:packet loss丢包率,time,ping的时间

如果ping不通可能有什么原因:

ip配置错误,没有写网关

或者路由器问题(ping百度,如果可以ping通,说明没有问题)

是不是对方服务器问题,可以用别的机器ping对方服务器,如果正常说明对方服务器没有问题

用tcpdump抓包看是否有接收到包,如果可以就说明机器可以接收到,看防火墙有没有组织

对方服务器去ping百度

ddos攻击:

DDOS是指拒绝服务攻击,亦称洪水攻击,是一种网络攻击手法,其目的在于使目标计算机的网络或系统资源耗尽,使服务暂时中断或停止,导致其正常用户无法访问。当黑客使用网络上两个或以上被攻陷的计算机作为“僵尸”向特定的目标发动“拒绝服务”式攻击时,称为分布式拒绝服务攻击。

攻击方式:

DDOS攻击可以具体分成两种形式:带宽消耗型以及资源消耗型。它们都是透过大量合法或伪造的请求占用大量网络以及器材资源,以达到瘫痪网络以及系统的目的。

解决办法(烧钱):

DOS攻击:封ip地址

DDOS攻击:大多数完成注册的域名需要两个DNS服务器,但这远远不够。你要确保你的DNS服务器以及你的网站和其他资源都处于负载均衡的保护状态下。你也可以使用一些公司提供的冗余DNS。比如,有很多人使用内容分发网络(分布式的状态)给客户发送文件,这是一种很好的抵御DDoS攻击的方法。若你需要,也有很多公司提供了这种增强DNS的保护措施。

计算机网络(4)传输层相关推荐

  1. 【计算机网络】传输层 : 总结 ( TCP / UDP 协议 | 寻址与端口 | UDP 协议 | TCP 协议特点 | TCP 连接释放 | TCP 流量控制 | TCP 拥塞控制 ) ★★★

    文章目录 一.传输层 TCP / UDP 协议 ★ 二.寻址端口号 ★ 三.UDP 协议特点 四.UDP 协议首部格式 五.UDP 校验 六.TCP 协议 特点 ★ 七.TCP 报文段首部格式 八.T ...

  2. 【计算机网络】传输层 : TCP 连接管理 ( TCP 连接建立 | 三次握手 | TCP 连接释放 | 四次挥手 )

    文章目录 一.TCP 连接管理 二.TCP 连接建立 三.TCP 连接建立 相关报文段 字段 四.SYN 洪泛攻击 五.TCP 连接释放 一.TCP 连接管理 TCP 传输数据过程 : 建立连接 -& ...

  3. 计算机网络传输层课件,计算机网络技术,传输层协议课件

    计算机网络技术,传输层协议课件 lufei1108@ 阿迪达斯三条纹标志是由阿迪达斯的创办人阿迪·达斯勒设计的,三条纹的阿迪达斯标志代表山区,指出实现挑战.成就未来和不断达成目标的愿望. 第4章 传输 ...

  4. 【计算机网络】传输层(一)—— 传输层概述

    [计算机网络]传输层(一)-- 传输层概述 一.传输层的功能 二.传输层的寻址与端口 (一).端口 (二).端口号 端口号的分类 (三).套接字 (四).UDP (五).TCP 一.传输层的功能 传输 ...

  5. 计算机网络自顶向下 传输层 习题

    计算机网络自顶向下 传输层 习题 考虑在主机 A 和主机 B 之间有一条 TCP 连接.假设从主机 A 传送到主机 B 的 TCP 报文段具有源端口号 x 和目的端口号 y.对于从主机 B 传送到主机 ...

  6. 用有穷状态自动机描述计算机网络的传输层协议,计算机网络基椽—第八章(传输层)(全).ppt...

    计算机网络基椽-第八章(传输层)(全) 第八章 传输层 8.1 传输层概述 2. 传输层的功能 3. 传输层协议与数据链路层协议的区别 8.2 因特网的传输协议--- TCP和UDP TCP消息格式 ...

  7. 计算机网络之传输层笔记

    传输层 前提 参考书:谢希仁<计算机网络(第7版)>.王道计网课程.天勤计网课程等. 1 传输层概述 1.1 传输层简介 (1)传输层为应用层提供通信服务,使用网络层的服务. (2)传输层 ...

  8. 408王道计算机网络强化——传输层和应用层

    目录 1.传输层和应用层概述 2.传输层 ​编辑 2.1.UDP的首部格式 2.2.TCP的首部格式 2.3.TCP的连接建立 2.4.TCP的连接释放 2.5.慢开始和拥塞部分.快重传和快恢复 3. ...

  9. 计算机网络--网络层传输层复习

    一.网络层 4.1 ~4.2 节 R1. 问题:Let's review some of the terms used in this book. Earlier, we talked about h ...

  10. 计算机网络概述---传输层 UDP和TCP

    传输层的功能 传输层为应用进程间提供端到端的逻辑通信(网络层是提供主机之间的逻辑通信), 传输层两大重要的功能:复用 和 分用. 复用:在发送端,多个应用进程公用一个传输层: 分用:在接收端,传输层会 ...

最新文章

  1. Windows Phone 8 开发资源汇总
  2. 谈谈基于机器学习的编程到底比传统编程强在哪里?
  3. Nauuo and Chess
  4. 这100道Linux常见面试题,看看你会多少?
  5. 队列的链式存储结构及实现
  6. Linux常用性能分析监控工具 iostat、iotop、top、htop、free、iftop
  7. [WARNING]考前必读?!
  8. 前端实现video播放
  9. Java语言实现word转PDF
  10. js视频播放器/video详解
  11. Java 开发flink流/批处理程序
  12. 应届毕业生 求职面试宝典
  13. Win11系统/RTX30系列显卡——安装gpu版pytorch
  14. React 中 TypeScript 和装饰器及 Hooks
  15. vue中全局注册和局部注册
  16. Google Sheet 学习笔记
  17. “ 试题管理系统”需求分析报告
  18. C# 和EmguCV
  19. OverNet-250FPS SISR实时算法- | Lightweight Multi-Scale Super-Resolution with Overscaling Network
  20. java石头人_宋玉成

热门文章

  1. GLSurfaceView
  2. 【CC2640】CC2640架构及原理
  3. js小技巧:根据身份证号,获取身份信息。如性别、生日、年龄
  4. python 领英爬虫
  5. 两个处理IP好用的Python库ipaddr和netaddr
  6. SCX-4521F一体机MAC驱动
  7. Python概述:C++程序员眼中的Python
  8. 什么是Java的反射机制?
  9. 动态ip代理:保护ip地址,这五种方法请收好
  10. docker 创建etcd集群