计算机网络(4)传输层

这篇具有很好参考价值的文章主要介绍了计算机网络(4)传输层。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

小知识点:

三次握手:

状态:

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

计算机网络(4)传输层

端口号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系统里面的协议和其端口

计算机网络(4)传输层

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

arp协议

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

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

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

  1. arp request
  2. arp response

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

源IP地址和目的地址

计算机网络(4)传输层

arp封装之后:

计算机网络(4)传输层

然后进行arp广播

交换机会帮我们进行转发

得到的arp response包

计算机网络(4)传输层

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的保护措施。文章来源地址https://www.toymoban.com/news/detail-449916.html

到了这里,关于计算机网络(4)传输层的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机网络期末总复习知识点

    互联网的2个重要基本特点: 连通性(connectivity)和资源共享(sharing) 。 端系统之间的两种通信方式: 客户/服务器方式(Client/Server方式、C/S方式)、对等方式(Peer to Peer方式、P2P方式) 。 客户/服务器方式:进程之间服务和被服务的关系。客户是服务的请求方,服务器是

    2024年02月06日
    浏览(65)
  • 计算机网络:应用层知识点汇总

    p2p也就是对等模型 我们知道,随着人们建立一个网站的成本降低以及技能的提高,越来越多的网站出现,并且也会有千万计的人们去访问这些网站。而网民在访问网站的过程中,其实就是主机和另一台主机进行一个远程之间的通信,以及资源交换的过程。 我们的主机怎么找

    2024年03月09日
    浏览(46)
  • 数据通信与计算机网络(精炼知识点)

    该部分知识点不多,分值3分 TCP采用可变大小的滑动窗口协议进行流量控制。在前向纠错系统中,当接收端检测到错误后就根据纠错编码的规律自行纠错;在后向纠错系统中,接收方会请求发送方重发出错分组。IP协议不预先建立虚电路,而是对每个数据报独立地选择路由并一

    2024年02月06日
    浏览(51)
  • 王道考研计算机网络第四·章知识点汇总

    4.1.1网络层功能概述  4.1.2 SDN基本概念  4.2.1 路由算法和路由协议概述      4.3.1 IP数据报格式     4.3.2 IP数据报分片    4.3.3 IPv4地址   4.3.4 网络地址转换NAT  4.3.5 子网划分和子网掩码  不同子网掩码得到的网络地址可能相同  网络号为B类地址,16位网络号;6位子网号,10位

    2024年02月11日
    浏览(51)
  • 王道考研计算机网络第五章知识点汇总

    5.1.1 传输层概述 复用:好比家里面每个人都要写信,向信箱里面投入信件,然后由邮递员取走。 分用:就是每个人都收到了各自的回信,然后从信箱中取走各自的信  5.2 UDP协议  注意:用户数据报和检验和都是指的整个UDP数据报 5.3.1 TCP协议特点和TCP报文段        11,12,

    2024年02月13日
    浏览(46)
  • 【计算机网络详解】——知识点复习(期末不挂科版)

    配套视频:湖科大教书匠 配套教材:计算机网络(第8版) 谢希仁 根据学习通要求“掌握”的部分总结的, 有亿点点长 ,时间来不及就掌握画 ☆ 的就好啦 交换方式 特点 优点 缺点 电路交换 预先建立通信路径 传输稳定,延迟低 资源浪费,不适用于并发 报文交换 直接传输

    2024年02月10日
    浏览(43)
  • 【软考复习系列】计算机网络易错知识点记录

    参考文章:图解路由器:这玩意儿能连接全世界的网络? - 知乎 (zhihu.com) 宏内核和微内核 宏内核应该叫单内核或者单核。在这种单核的设计中,内核是一个大的整体,所有内核服务都运行在一个地址空间中,函数之间的调用链路少,直接通信简单高效。 微内核的功能会划分

    2024年02月08日
    浏览(38)
  • 前端面试的计算机网络部分(2)每天10个小知识点

    👍 点赞,你的认可是我创作的动力! ⭐️ 收藏,你的青睐是我努力的方向! ✏️ 评论,你的意见是我进步的财富! DNS(Domain Name System)是一种用于将域名转换为IP地址的系统,使我们能够通过易记的域名访问互联网资源。DNS查询过程可以分为递归查询和迭代查询两种方式

    2024年02月12日
    浏览(51)
  • 前端面试的计算机网络部分(4)每天10个小知识点

    👍 点赞,你的认可是我创作的动力! ⭐️ 收藏,你的青睐是我努力的方向! ✏️ 评论,你的意见是我进步的财富! IPv4(Internet Protocol version 4)和IPv6(Internet Protocol version 6)是互联网上两种不同的IP地址分配方案,用于标识和定位设备在网络中的位置。它们之间有以下主

    2024年02月11日
    浏览(39)
  • 软考系统架构师知识点集锦十:计算机网络、数学与经济管理、知识产权与标准化

    2.1.1常见协议及功能          网际层是整个TCP/IP体系结构的关键部分,其功能是使主机可以把分组发往任何网络并使分组独立地传向目标。 POP3: 110 端口,邮件收取 SMTP: 25 端口,邮件发送 FTP: 20数据端口/21控制端口,文件传输协议 HTTP: 80端口,超文本传输协议,网页传输

    2024年02月07日
    浏览(73)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包