首页 > 其他分享 >网编(ip相关知识)

网编(ip相关知识)

时间:2024-11-26 10:33:43浏览次数:7  
标签:网编 ip 知识 192.168 255.255 地址 TCP IP地址 主机

目的:了解网络,掌握在linux下的网络编程,实现多机通信

进程间通信方式:套接字socket

C/S B/S

学习方法:

1.  记忆知识点主要记大框架,再记忆细节

2.  按照框架和流程写代码

3.  代码量比较大,出现问题先自己排查

4.  重点在逻辑,代码可能会大量复制

5.  项目重点先梳理项目框架,不只是机械出结果

1.  网络发展史

Internet历史

1.1 局域网(LAN)

局域网的缩写是LAN,local area network,本地的网络,只能实现小范围短距离的网络通信。我们的家庭网络是典型的局域网。电脑、手机、电视、智能音箱、智能插座都连在路由器上,可以互相通信。局域网,就像是小区里的道路,分支多,连接了很多栋楼。

1.2 广域网(Wan)

广域网(Wide Area Network)是相对局域网来讲的,局域网的传输距离比较近,只能是一个小范围的。如果需要长距离的传输,比如某大型企业,总部在北京,分公司在长沙,局域网是无法架设的。广域网,就像是大马路,分支可能少,但类型多,像国道、省道、高速、小道等,连接了很多大的局域网。

这时需要其它的解决方案。

第一,通过因特网,只需要办一根宽带,就实现了通信,非常方便,现在的宽带价格也比较便宜。

第二,通过广域网专线。

所以为了数据安全,不能连接因特网,需要用一条自己的专用线路来传输数据,这条线路上只有自己人,不会有其他人接入,且距离很远,这个网络就叫 “广域网”。

1.3 家庭用网

1.3.1光猫

光猫是一种类似于数字调制解调器的设备,接入的是光纤专线,是光信号。用于广域网中光电信号的转换和接口协议的转换,接入路由器,是广域网接入。一端连接运营商的入户线缆,一般是光纤,一端连接你自己的路由器。是一个运营商到你自己设备的桥梁。

1.3.2交换机与路由器:

交换机:用于局域网内网的数据转发 (转发给多个设备)

路由器:用于连接局域网和外网 (连接局域网的设备)

现在大部分路由器内部都是有交换机, 所以路由器都有交换机的功能。

注意交换机没有IP分配和IP寻址的功能,所以交换机不具备路由器功能。

2.  IP地址(重点)

2.1基本概念

● IP地址是Internet中主机的标识

● Internet中的主机要与别的机器通信必须具有一个IP地址

● IP地址为32位(IPv4)或者128位(IPv6)

● 每个数据包都必须携带目的IP地址和源IP地址,路由器依靠此信息为数据包选择路由

● 表示形式:常用点分十进制形式,如202.38.64.10,最后都会转换为一个32位的无符号整数。

2.2二级划分(ipv4)

ip = 网络号 + 主机号

网络号:表示是否在一个网段(局域网)

主机号:标识在本网段的ID,同一个局域网不能重复

A类:1.0.0.0 ~ 126.255.255.255

B类:128.0.0.0~191.255.255.255

C类:192.0.0.0~223.255.255.255

D类:224.0.0.0~239.255.255.255

E类:240.0.0.0~247.255.255.255

2.3特殊地址

1.  网络地址:用于标识网络的起始地址 有效网络号 + 全为0的主机号

192.168.50.132 ===》 192.168.50.0

128.1.2.3 128.1.0.0

12.1.2.3 12.0.0.0

2.  广播地址 用于给局域网内所有主机发送数据,有效网络号 + 全为1的主机号

192.168.50.132 ===》 192.168.50.255

128.1.2.3 128.1.255.255

12.1.2.3 12.255.255.255

拓展:

0.0.0.0: 用于服务器中, 0.0.0.0指的是监听本机上所有的IPV4地址

接受来自任意源IP地址的数据包,常用于服务器程序监听所有网络接口的连接请求。

127.0.0.1:回环地址/本机地址,一般用来测试使用,所有发往该类地址的数据包都应该被loop back

原样送回;

练习:C类地址,同一网段最多可以连接多少个主机??

192.168.1.2 256 - 2 = 254

2.4子网掩码

1)  作用:可以将一个IP地址划分成网络地址和主机地址

2)特点:

1.子网掩码长度是和IP地址长度完全一样的,32bit的二进制数组成;

2.网络号全为1,主机号全为0

C类默认子网掩码: 255.255.255.0

B 255.255.0.0

A 255.0.0.0

192.168.50.123 & 255.255.255.0 ==》 192.168.50.0

192.168.50.123 & ~255.255.255.0==》 0.0.0.123

子网掩码 & ip地址 = 网络地址

~子网掩码 &ip地址 = 主机地址

2.5三级划分

二级地址:网络号 + 主机号

三级地址:网络号 + 子网号 + 主机号

练习1

已知一个子网掩码号为255.255.255.192,问,最多可以连接多少台主机?

1100 0000 2^6 = 64 - 2 = 62

练习2

某公司有四个部门:行政、研发1、研发2、营销,每个部门各40台计算机接入公司局域网交换机,如果要在192.168.1.0网段为每个部门划分子网,子网掩码应该怎么设置,每个子网的地址范围分别是什么?(4个部门之间不能通信)

子网掩码:255.255.255.192

192.168.1.00 000001 ~ 192.168.1.00 111110 (去掉网络地址和广播地址)

192.168.1.1 ~ 192.168.1. 62

192.168.1.01.......

192.168.1.65 ~ 192.168.1.126

192.168.1.10......

192.168.1.129 ~ 192.168.1.190

192.168.1.11......

192.168.1.193 ~ 192.168.1.254

练习3

有两台电脑主机,在最少浪费IP地址的情况下,将172.16.14.4与172.16.13.2划归为同一网段,则子网掩码应该设置为?

172.16.0000 1110.4

172.16.0000 1101.2

255.255.11111100.0 ==》 255.255.252.0

补充:

域名系统

由于使用IP地址来指定计算机不方便人们记忆,且输入时候容易出错,用字符标识网络中计算机名称方法。

这种命名方法就像每个人的名字,这就是域名(Domian Name)

域名服务器(Domain Name server):用来处理IP地址和域名之间的转换。

域名系统(Domain Name System,DNS):域名翻译成IP地址的软件

一个域名,可以绑定多个ip

域名结构

例如域名 www.baidu.com.cn 从右向左看

cn为高级域名,也叫一级域名,它通常分配给主干节点,取值为国家名,cn代表中国

com为网络名,属于二级域名,它通常表示组织或部门

中国互联网二级域名共40个,edu表示教育部门,com表示商业部门,gov表示政府,军队mil等等

baidu为机构名,在此为三级域名,表示百度

www:万维网world wide web,也叫环球信息网,是一种特殊的信息结构框架。

3.  网络模型

3.1 网络的体系结构

● 网络采用分而治之的方法设计,将网络的功能划分为不同的模块,以分层的形式有机组合在一起。

● 每层实现不同的功能,其内部实现方法对外部其他层次来说是透明的。每层向上层提供服务,同时使用下层提供的服务

● 网络体系结构即指网络的层次结构和每层所使用协议的集合

● 两类非常重要的体系结构:OSI与TCP/IP

分层的好处:

1.  各层之间独立,每一层不需要知道下一层如何实现,而仅仅只需要知道该层通过层间的接口所提供的的服务。

2.  稳定,当任何一层发生变化时,只要层间接口关系保持不变,则这层以上或以下层不受影响。

3.  易于实现和维护(知道是什么功能,就到指定层去查找)

4.  促进标准化工作

3.2 OSI模型

● OSI模型是一个理想化的模型,尚未有完整的实现

● OSI模型共有七层

● OSI现阶段只用作教学和理论研究

应用层:指定特定应用的协议,文件传输,文件管理,电子邮件等

表示层:确保一个系统应用层发送的消息可以被另一个系统的应用层读取,编码转换,数据解析,管理数据加密,解密;

会话层:通信管理,负责建立或者断开通信连接

传输层:端口号,数据传输到具体那个进程程序(端到端)

网络层:路由器中是有算法的,ip,(主机到主机)(路由的转发)

链路层:格式变为帧(把数据分成包,一帧一帧的数据进行发送)

物理层:传输的是bit流(0与1一样的数据),物理信号,没有格式

3.3TCP/IP模型

OSI和TCP/IP模型对应关系图

3.4常见网络协议

网络接口和物理层:

PPP:拨号协议(老式电话线上网方式)

ARP:地址解析协议 IP-->MAC

RARP:反向地址转换协议 MAC-->IP

网络层:

IP(IPV4/IPV6):网间互连的协议

ICMP:网络控制管理协议,ping 命令使用

IGMP:网络分组管理协议,广播和组播使用

传输层:

TCP:传输控制协议

UDP:用户数据报协议

应用层:

SSH:加密协议

telnet:远程登录协议

FTP:文件传输协议(TCP)

TFTP:简单文件传输协议(UDP)

HTTP:超文本传输协议(明文发送)HTTPS加密传输

DNS:域名解析协议

SMTP/POP3:邮件传输协议

4.  TCP和UDP(重点)

TCP:传输控制协议

TCP(Transmission Control Protocol)是一种面向连接的传输层协议,它能提供高可靠性通信(即数据无误、数据无丢失、数据无失序、数据无重复到达的通信)

适用情况:

1、适合于对传输质量要求较高,以及传输大量数据的通信。

2、在需要可靠数据传输的场合,通常使用TCP协议

3、MSN/QQ等即时通讯软件的用户登录账户管理相关的功能通常采用TCP协议

缺点:

发送量较大,效率低

UDP :用户数据报协议

UDP (User Datagram Protocol)用户数据报协议,是不可靠的无连接的协议。在数据发送前,因为不需要进行连接,所以可以进行高效率的数据传输。

适用情况:

1.发送小尺寸数据(如对DNS服务器进行IP地址查询时)

2.在接收到数据,给出应答较困难的网络中使用UDP。

3.适合于广播/组播式通信中。

4.MSN/QQ/skype 等即时通讯软件的点对点文本通讯以及音视频通讯通常采用UDP协议

5.流媒体、VOD、VoIP、IPTV等网络多媒体服务中通常采用UDP方式进行实时数据传输

Dos(拒绝式服务)攻击?

DOS:即 Denial of service,拒绝服务的缩写,拒绝服务,Dos 攻击即攻击者想办法让目标机器停止提供服务或资源访问,这些资源包括磁盘空间、内存、进程甚至网络带宽,从而阻止正常用户的访问。

要对服务器实施拒绝服务攻击,主要有以下两种方法:

①迫使服务器的缓冲区满,不接收新的请求;

②使用IP欺骗,迫使服务器把合法用户的连接复位,影响合法用户的连接,这也是Dos攻击实施的基本思想。为便于理解,以下介绍一个简单的Dos攻击基本过程:攻击者先向受害者发送大量带有虚假地址的请求,受害者发送回复信息后等待回传信息。由于是伪造地址,所以受害者一直等不到回传信息,分配给这次请求的资源就始终不被释放。当受害者等待一定时间后,连接会因超时被切断,此时攻击者会再度传送一批伪地址的新请求,这样反复进行直至受害者资源被耗尽,最终导致受害者系统瘫痪。

5.  编程预备知识

5.1socket套接字

1》1982 - Berkeley software Distributions操作系统引入了socket作为本地进程之间通信的接口

2》1986 - Berkeley扩展了socket接口,使之支持UNIX下的TCP/IP 通信

3》现在很多应用(FTP,Telnet)都依赖这一接口

socket

1、是一个编程接口

2、是一种特殊的文件描述符(everything in unix is a file)

3、并不仅限于TCP/IP协议

4、面向连接(Transmission control Protocol - TCP/IP)

5、无连接(User Datagram Protocol -UDP和Inter-network Packet Exchange- IPX)

5.1.2 socket类型(掌握)

流式套接字(SOCK_STREAM)   TCP

提供了一个面向连接、可靠的数据传输服务,数据无差错、无重复的发送且按发送顺序接收。内设置流量控制,避免数据流淹没慢的接收方。数据被看作是字节流,无长度限制。

数据报套接字(SOCK_DGRAM)  UDP

提供无连接服务。数据包以独立数据包的形式被发送,不提供无差错保证,数据可能丢失或重复,顺序发送,可能乱序接收。

原始套接字(SOCK_RAW)

可以对较低层次协议如IP、ICMP直接访问。

5.2端口号

● 为了区分一台主机接收到的数据包应该转交给哪个进程来进行处理,使用端口号来区分

● TCP端口号与UDP端口号独立

● 端口用两个字节来表示 2byte

众所周知端口:1~1023(1~255之间为众所周知端口,256~1023端口通常由UNIX系统占用)
已登记端口:1024~49151    (选1000以上10000以下) 
动态或私有端口:49152~65535

5.3字节序

1.  字节序是指不同类型的cpu主机,内存存储 "多字节整数" 序列的方式

2.  浮点类型,字符类型,字符串没有字节序。

3.  小端序(little-endian) - 低序字节存储在低地址 (主机字节序)

4.  大端序(big-endian) - 高序字节存储在低地址 (网络字节序)

面试题:写一个函数,判断当前主机的字节序?

#include<stdio.h>
union val
{
    int a;
    char b;
};

int main(int argc, char const *argv[])
{
    //共用体
    union val v;
    v.a = 0x12345678;
    printf("%#x\n",v.b);
    //强转
    int a = 0x12345678;
    char b = (char) a;
    printf("%#X\n",b);

    //指针
    char *p = &a;
    printf("%#x\n",*p);
   
    return 0;
}

5.3.1主机字节序到网络字节序

u_long htonl(u_long hostlong);

u_short htons(u_short short);//掌握这个

5.3.2网络字节序到主机字节序

u_long ntohl(u_long hostlong);

u_short ntohs(u_short short);

5.4IP地址转换

typedef uint32_t in_addr_t;
struct in_addr
{
    in_addr_t s_addr;
};

in_addr_t inet_addr(const char *ip);//从人看的IP地址转换为机器使用的32位无符号整数
char *inet_ntoa(struct in_addr in);//从机器到人

代码测试:

标签:网编,ip,知识,192.168,255.255,地址,TCP,IP地址,主机
From: https://blog.csdn.net/luoqing418/article/details/144050045

相关文章

  • 基于java开发知识科普网站毕业设计源码+论文
    一、环境信息开发语言:JAVAJDK版本:JDK8及以上数据库:MySql5.6及以上Maven版本:任意版本操作系统:Windows、macOS开发工具:Idea、Eclipse、MyEclipse开发框架:Springboot+HTML+jQuery+Mysql二、所有选题列表所有毕业设计选题列表,点击文章结尾下方卡片免费咨询三、功能介......
  • JavaScript 编程精解(Eloquent)第四版·翻译完成
    JavaScript编程精解(Eloquent)第四版第一章:引言第一部分:语言第二章:值、类型和运算符第三章:程序结构第四章:函数第五章:数据结构:对象和数组第六章:高阶函数第七章:对象的秘密生活第八章:项目:一个机器人第九章:漏洞和错误第十章:正则表达式第十一章:模......
  • 小知识点
    1、可以在go.mod里设置一个package名,这样可以将这个package名作为go.mod所在目录的包名,导包的时候可以用这个名作为路径例如:2、time.UnixMilli()是以毫秒为单位获取时间戳3、typestrstring//可以把str同时视为一个string和一个类//可以给str添加方法func(sstr)s1()int......
  • MySQL的补充知识点
    SQL注入?定义:MySQL的sql注入是一种攻击技术,攻击者通过再应用程序中插入恶意的sql代码,从而控制应用程序和服务器之间的交互,当应用程序未对用户输入进行适当验证或转义时,这种攻击就可能发生。发生的情况:未对用户输入进行验证:当Web应用程序直接将用户输入拼接到SQL查询语句中,而......
  • Go进阶21:Goland 6条Tips让编程更有效率
    作为一个重度使用JetbrainsIDE全家桶的用户.这里我有几条可以加速您开发速度,减少您Paste/Copy敲打键盘的Tips.1.快速实现Interface操作步骤:光标移动到struct名称上Alt/Option+Enter选择ImplementInterface…Control+I搜索您需要实现的interface2.快速抽象I......
  • Python知识分享第十天
    “”"案例:假设你是一名教师,负责管理学生的成绩。你有一个名为grades.txt的文件,记录了所有学生的成绩。文件内容如下:Alice,85Bob,78Charlie,92David,88Eve,76你需要编写一个Python脚本,读取文件内容并计算出所有学生的平均成绩。“”"#思路一#stu_list=[]#......
  • 深入理解与应用 multipart/form-data:文件上传与预览实现解析
    1.理解multipart/form-datamultipart/form-data是一种在HTTP请求中使用的MIME类型,主要用于在客户端和服务器之间传输包含文件或二进制数据的表单数据。它通过一个边界(boundary)来分隔不同的表单字段和文件数据。简单来说,multipart/form-data类型用于确保在表单中提......
  • NOip2024前最后一周训练日记
    也是有了博客了,上周花了点时间稍微搭了一下界面。闲话初三生,目前为止初中去过三个学校。第一个学校。这时基本没怎么沾OI,只是靠机构和自学了解的,因此前两年的CSP都基本是不好。记得初一下的时候,GF组织算法冬令营,原本想着打比赛打的好一点去进本部校队的,但我发现了甚至零基......
  • 【软考速通笔记】系统架构设计师③——信息安全技术基础知识
    文章目录一、前言二、信息安全基础知识2.1信息安全的基本要求2.2信息安全的范围2.3网络安全表现2.4安全措施包括三、信息安全系统的组成框架3.1技术体系:3.2组织机构体系:3.3管理体系四、信息加解密技术4.1对称密钥加密算法4.2非对称密钥加密4.3数字签名五、......
  • 【软考速通笔记】系统架构设计师④——系统工程基础知识
    文章目录一、前言二、系统工程方法2.1霍尔的三维结构2.2切克兰德法2.3并行工程2.4综合集成法三、系统工程生命周期四、系统生命周期方法五、系统性能5.1计算机的性能指标5.2路由器的性能指标5.3交换机的性能指标5.4网络的性能资料5.5操作系统的性能指标5.6数......