arp

计算机网络面试题3

倖福魔咒の 提交于 2019-11-28 08:30:32
面试中网络方面的知识被问到的概率很大,尤其是互联网公司,要熟悉osi七层模型,其中TCP/IP方面的知识尤其重要。如果自己平时有Socket编程的经验对面试也是很有帮助的。网络方面有空可以看看TCP/IP详解卷一和UNIX网络编程。以下总结了一些面试中常问的问题: 1、TCP为什么需要3次握手,4次断开? “三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误”。 client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。于是就向client发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了。由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送数据。但server却以为新的运输连接已经建立,并一直等待client发来数据。这样,server的很多资源就白白浪费掉了。采用“三次握手”的办法可以防止上述现象发生。例如刚才那种情况,client不会向server的确认发出确认。server由于收不到确认,就知道client并没有要求建立连接。”

ARP与ICMP

浪尽此生 提交于 2019-11-28 07:21:54
tracert www.baidu.com 追踪 1.网络层:把数据帧转换为数据包,实现基于Ip地址的寻址和转发。 数据帧:在数据外边加入二层头部(帧头和帧尾) Dmac(6Byte)+Smac(6Byte)+Type(2Byte)+Data +FCS(4Byte,帧尾) 数据包:三层IP头部+数据 2.IP头部:标准长度是20Byte。 TTL:time to live 生存时间,是一个三层防环机制,可以限制一个数据包在网络中传输的时间。 数据包每经过一个三层设备(路由器),他的TTL值就会减1,如果TTL=0,那么这个数据包就不能继续传输,会被丢弃。 每经过一个三层设备,叫做1跳。 Protocol:用来标识上层协议,如果是UDP=17;TCP=6;ICMP=1. Source IP Destination IP 3.ARP:Address Resolution Protocol地址解析协议,用来根据Ip地址解析mac。 ARP报文分为2类:ARP请求报文Request;ARP响应报文Reply。 ARP请求报文是以广播的形式发送;ARP响应报文是以单播的形式回复。 arp -a //查看arp缓存信息 arp -d //清除ARP缓存 4.ICMP:(Internet Control Message Protocol)互联网控制报文协议,是一个“错误侦测与回馈机制”

In Boost ASIO how can I set the source IP address to impersonate another server's IP address?

可紊 提交于 2019-11-28 07:03:58
问题 I have a Boost ASIO-based C++ server program and I'd like to be able to set the source IP address used by TCP to that of another server. I know one can read the source and destination IP addresses but presumably they can be set as well? Presumably if I set the "wrong" source IP address in the C++ code there will be some interaction with the network stack. Won't the network stack re-set the source IP address on the way out even if the C++ code is right? Is the right way to do this to write C++

Apache源码包在LINUX(CENTOS6.8)中的安装(出现问题及解决)

醉酒当歌 提交于 2019-11-28 06:46:50
任务:在CENT6.8系统中安装Apache(版本为:httpd-2.4.41) 前提:由于源码包必须先编译后安装,所以必须先安装编译器:gcc 理论步骤: 1.检测gcc软件包,如果不存在则进行安装。 2.下载Aache的源码包(压缩包形式)并上传到CENTOS服务器中 3.解压源码包后进入解压后的目录,执行配置,编译,安装。   3.1 配置:使用 ./configure 进行安装目录的设置 3.2 编译:使用 make 命令直接执行 3.3 安装:使用 make install 命令直接执行。 4.如果无意外,按照“理论步骤',完成后即可在CENTOS服务器启用httpd服务(运行apache)中,使用浏览器访问 : http://localhost/ 或 http://127.0.0.1 或 http://192.168.253.129 实际过程: 检测gcc服务包: [root@cent001 ~]# rpm -q gcc gcc-4.4.7-23.el6.x86_64 说明gcc服务包已经安装。进入 ”理论步骤“2 下载Aache的源码包(压缩包形式)并上传到CENTOS服务器中: 访问:http://mirror.bit.edu.cn/apache/httpd/ 找到: httpd-2.4.41.tar.gz 然后下载到本地。

ioctl操作

随声附和 提交于 2019-11-28 05:14:17
  在本书中有两个地方都对这个函数进行了介绍,其实还有很多地方需要这个函数。ioclt函数传统上一直作为纳西而不适合归入其他精细定义类别的特性的系统接口。网络程序(特别是服务器程序)经常在程序启动执行后使用ioctl获取所在主机全部网络接口的信心,包括:接口地址、是否支持广播、是否支持多播。 #include <unistd.h> int ioctl(int fd,int request,...../* void *arg /); //返回:若成功则为0.失败则我-1 套接字操作 文件操作 接口操作 ARP高速缓存操作 路由表操作 流系统   不但某些ioclt操作和某些fcntl操作功能重叠(譬如把套接字设置为非阻塞),而且某些操作可以使用ioctl以不止一种方式制定(譬如设置套接字的进程组属主)。下表列出了网络相关ioctl请求的request参数以及arg地址必须指向的数据类型。 套接字操作   明确要求套接字ioctl请求有三个,它们都要求ioctl的第三个参数是指向某个整数的一个指针。 SIOCATMARK:如果本套接字的读指针当前位于带外标记,那就通过由第三个参数指向的帧数放回一个非0值,否则返回一个0值。 SIOCGPGRP:通过由第三个参数指向的整数返回本套接字的进程ID或进程组ID,该ID指定针对本套接字的SIGIO或SIGURG信号的接受进程。 SIOCSPGR

Is there a way to send ARP request via Java?

笑着哭i 提交于 2019-11-28 03:42:43
问题 Is there a way to send ARP request within a Java application? I know that ARP is sitting a layer under TCP and UDP therefore by default Java couldn't send ARP request. I am just wondering is there any 3rd party Java library that will allow you to send ARP request. To capture ARP reply, I know I can use jpcap so that part is solved. Thanks 回答1: A java app can always execute some external command, calling another tool to do it. I'm not sure what you mean by "standard java" though. Based on

Send a ping to each IP on a subnet

我与影子孤独终老i 提交于 2019-11-28 03:15:32
Is there a command line based way to send pings to each computer in a subnet? Like for(int i = 1; i < 254; i++) ping(192.168.1.i); to enforce arp resolution? I would suggest the use of fping with the mask option, since you are not restricting yourself in ping. fping -g 192.168.1.0/24 The response will be easy to parse in a script: 192.168.1.1 is alive 192.168.1.2 is alive 192.168.1.3 is alive 192.168.1.5 is alive ... 192.168.1.4 is unreachable 192.168.1.6 is unreachable 192.168.1.7 is unreachable ... Note: Using the argument -a will restrict the output to reachable ip addresses, you may want

ARP地址解析协议

纵然是瞬间 提交于 2019-11-28 02:56:19
  (网际控制报文协议) ICMP 、(网际组管理协议) IGMP 使用 IP 协议(网际协议),IP协议使用 ARP 协议(地址解析协议)。   ARP协议的 用途 是: 从网络层使用的IP地址,解析出在数据链路层使用的硬件地址。 1.ARP协议的要点:    网络层使用的是IP地址,但是在实际的网络链路上传送数据帧时,最终还是必须使用该网络的物理地址。   (IP地址32位,物理地址48位)   主机ARP高速缓存中存放一个从IP地址到硬件地址的映射表,这个映射表还经常动态更新。每台主机都设有一个ARP高速缓存,里面有本局域网的各主机和路由器的IP地址到硬件地址的映射表。 在本局域网中:     主机A广播————> 发送ARP请求分组(包含A的IP地址和物理地址)————> B收到ARP请求并发送ARP响应分组(将A的地址映射写入B的ARP高速缓存中)————> A收到ARP响应分组————> A写入IP地址与硬件地址的映射         (ARP是解决同一个局域网中的主机或路由器的IP地址和硬件地址的映射问题!) 注意! 问:既然在网络链路上传送的帧最终是按照硬件地址找到目的主机的,为什么还要用抽象的IP地址,而不直接使用硬件地址进行通信?这样似乎可以避免使用ARP。 答:全世界存在着各种各样的网络,它们使用不同的硬件地址

Keepalived+LVS实现LNMP网站的高可用部署

北战南征 提交于 2019-11-28 02:46:48
项目需求   当我们访问某个网站的时候可以在浏览器中输入IP或者域名链接到Web Server进行访问,如果这个Web Server挂了,那么整个系统都无法使用,用户也就不能进行正常的访问,这种情况将对公司产生一定的影响。这就是我们常说的系统中的单点故障。这部分的单点故障可以通过引入负载均衡器和至少另一个Web Server来缓解。同时由于有多台服务器同时提供服务,也加大了系统的负载能力提高了性能。   因此我们采用LVS的负载均衡技术,将前端请求按照设定规则调度到后端服务器,并与keepalived相结合实现高可用负载均衡。 项目拓扑 项目环境 主机名 主机IP 主机角色 K1 192.168.36.110 Keepalived-Master K2 192.168.36.111 Keepalived-Backup WEB1 192.168.36.112 Nginx、PHP WEB2 192.168.36.113 Nginx、PHP NFS 192.168.36.114 NFS Mariadb-M 192.168.36.115 Mariadb-Master Mariadb-S 192.168.36.116 Mariadb-Slave 开始部署:Keepalived服务器配置 安装Keepalived [root@k1 ~]#yum install -y keepalived

网络数据分析溯源(ARP嗅探的IP地址)

匆匆过客 提交于 2019-11-28 01:27:54
靶场地址: https://www.mozhe.cn/bug/detail/UHE1TFI0YkgyYVV4UlJRZk53VUt6dz09bW96aGUmozhe 根据题意 进入环境,下载文件,用wireshark打开,过滤arp 可以看到,被欺骗的目标主机不断询问,但得到的结果都是攻击机的ip,可以确定arp欺骗主机为172.16.1.104,验证ip得到key 来源: https://blog.csdn.net/asd158923328/article/details/99883131