网络编程知识点

目录

一、网络基础知识

1、网络OSI模型、TCP/IP模型及每一层的协议功能简介

2、路由的概念

3、子网掩码net mask在网络不同设备中的具体功能

4、为何我们的IP地址一般都为192.168.xxx.xxx,而不是大网中的实际IP呢

5、TCP/IP协议族中每一层的功能介绍

6、socket理解

7、端口

二、TCP/UDP、IO模型

1、TCP协议特点

2、UDP协议特点

3、IO模型

4、IO多路复用模型

5、select()函数


一、网络基础知识

1、网络OSI模型、TCP/IP模型及每一层的协议功能简介

2、路由的概念

路由是网络中的重要概念,它指的是确定数据包从源节点到目标节点的路径或路线的过程,他确保数据包能够从发送者传输到接收者手里,即使在特别复杂的网络拓扑中也能找到正确的路径。

3、子网掩码net mask在网络不同设备中的具体功能

对路由器或交换机的作用:

当路由器接收到数据包时,它使用目标IP地址和子网掩码来确定数据包的目标子网,路由器查看自己的路由表,以找到适当的出口接口或下一跳路由器,以便将数据包传送到正确的目标子网。

对主机的作用:

当主机A向主机B发送数据包时,会使用自己的子网掩码与自己的IP地址、目标主机B的IP地址做“与”操作,然后将结果进行对比,来确定目标地址与自己是否处于同一子网,如果属于同一子网,主机将直接把数据包发送到目标主机而不经过路由器,如果不在同一子网,主机A会把数据包发送到默认网关(一般是路由器),由路由器来处理跨子网数据通信。

4、为何我们的IP地址一般都为192.168.xxx.xxx,而不是大网中的实际IP呢

因为NAT

在许多家庭和小型企业网络中,路由器通常会执行NAT功能,将局域网内的多个设备映射到单个公共IP地址。这使得多个设备可以共享一个有限数量的公共IP地址,并且可以访问互联网,同时仍然保持网络安全性。

当局域网内的设备需要与全球互联网上的设备进行通信时,路由器将负责将局域网内的私有IP地址转换为其公共的互联网上的IP地址。这种方式,局域网内的设备可以使用私有IP地址来组织和通信,而路由器则负责管理公共IP地址和私有IP地址之间的转换,以确保通信顺畅。

5、TCP/IP协议族中每一层的功能介绍

1.链路层

它俩合称为链路层,有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡(网卡)。它们一起处理与电缆的物理接口细节。负责将二进制流转换为数据帧,并进行数据帧的发送和接收,数据帧时网络传输中的基本单元。

2.网络层

又是也称做互联网层,处理分组在网络中的活动,例如分组的选路(路由)。当网络层接收到传输层的请求后,传输某个具有目的地址信息的分组,该层把分组封装在IP数据包中,填入数据包的首部,使用路由算法将其交付给适当的网络接口进行传输。在TCP/IP协议族中,网络层协议包括IP协议(网际协议),ICMP协议(internet互联网控制报文协议),以及IGMP协议(Internet组管理协议)。

3.传输层

主要为两台主机上的应用程序提供端到端的通信。在TCP/IP协议中,有两个互不相同的传输协议:TCP(传输控制协议)和UDP(用户数据报协议)。

TCP为两台主机提供高可靠性的数据通信。它所作的工作包括把应用程序交给它的数据分成合适的小块再交给下面的网络层、确认接收到的分组、设置发送最后确认分组的超时始终等。由于传输层提供了高可靠性的端对端的通信,因此应用层可以忽略所有这些细节。

而另一方面,UDP则为应用层提供了一种非常简单的服务。他只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据包能到达另一端。任何必须的可靠性必须由应用层来提供。

4.应用层

应用层使用相应的应用层协议,把封装好的数据交给传输层或是从传输层接收数据并处理。

6、socket理解

套接字socket是一种用于网络通信的编程接口,它允许计算之间通过网络进行数据传输。套接字提供了一种标准的方式,使不同主机上的两个应用程序之间能交换数据,只要这两台主机在局域网(LAN)或广域网(WAN)是连通的。

套接字作为一种接口的本质是,它是操作系统内核编写者对传输层/网络层(TCP/IP、UDP/IP)协议软件的二次封装,然后向上提供了一个方便的调用接口,故此,它处于应用层和传输层之间。应用程序的编写者如果想实现网际通信,则直接调用socket接口就可实现,而不需要关注底层协议的实现规则,只需直到底层协议的特点就行。

套接字作为数据交换的载体体现在,套接字管理(发送或接收)的网际数据存储于主机的内核空间中,有点类似于进程间通信的载体。所以我们把使用套接字通信也看做是一种特殊的IO,而这种IO也是基于套接字这一种特殊的fd(文件描述符)来操作的,这个fd同样存储于进程的文件描述符表中。

说到此处,我们可以得出,任何基于socket的编程,其应用层协议其实就是五花八门的对于socket的二次封装。

7、端口

端口(port)是在计算中网络中用于标识网络上的不同应用程序或服务的标志。端口号是一个16位的整数,可以取0~65535之间的值。端口号用于将传入的网络数据包路由到正确的应用程序或服务,使不同的网络应用程序能够在同一台主机上共存并监听不同的端口。

通常分为以下几种类型:

1.系统端口

这些端口号的范围使0~1023。它们通常被用于标识一些众所周知的网络服务,如HTTP(80)、HTTP(443)、FTP(21)、SSH(22)、Telnet(23)、SMTP(25)、等等。这些端口号在大多数操作系统上是预留的,只能由特权用户或管理员使用。

2.注册端口

这些端口号的范围是1024~49151。它们通常被用于用户自定义的应用程序或服务。如果我们开发一款网络应用程序,则建议绑定这个范围内的一个端口。

3.动态或私有端口

这些端口号的范围是49152~65535。它们通常被用于临时的网络连接,有客户端应用程序动态选择,而不是固定的端口号。

注意:不是所有的进程都有端口号,一般调用socket接口族的才会分配,当然,也可以自己选一个去注册

二、TCP/UDP、IO模型

1、TCP协议特点

使用流式套接字(SOCK_STREAM)

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

2、UDP协议特点

使用数据报套接字(SOCK_DGRAM)

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

3、IO模型

4、IO多路复用模型

5、select()函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值