云计算百科
云计算领域专业知识百科平台

0基础学习Linux——Linux软件编程——网络

1.概念

1.协议:通信双方约定的一套通信标准

2.网络通用协议模型

        1.OSI模型:理想模型

  • 应用层:要传递的数据和信息
  • 表示层:是否对数据加密
  • 会话层:是否需要建立会话链接
  • 传输层:传递数据的方式
  • 网络层:数据的路由(跨局域网的通信)
  • 数据链路层:局域网内部的通信
  • 物理层:物理介质的连接

        2.TCP/IP模型

  • 应用层
  • 传输层
  • 网络层
  • 网络接口层:融合了数据链路层和物理层

        3.TCP/IP网络模型中的协议:

                1.应用层:

                        HTTP协议:超文本传输协议

                        HTTPS协议:加密的HTTP协议

                        DNS协议:域名解析协议,将域名转换成IP地址

                        TELNET协议:远程登录协议

                        SMTP协议:邮件传输协议

                        MQTT协议:物联网传输协议

                        RTSP协议:流媒体协议

                2.传输层:

                        UDP协议:用户数据报协议

                        TCP协议:传输数据协议

                                          机制:通信之前:三次握手建立连接

                                                     通信之后:四次回收结束链接

                                                     通信过程中:确认机制

                                                     流量控制,拥塞控制

                        协议对比:

                                UDP资源开销比较小,TCP资源开销大

                                UDP传输机制简单,TCP传输机制复杂

                                UDP传输不安全,不可靠,TCP传输安全可靠

                3.网络层
                       1. IPV4协议

                               1. 192.168.0.107

                                     IP地址==网络位+主机位

                               2.网段号:网络位不变,主机位全为0

                               3.子网掩码:用来区分IP地址的网络位和主机位,子网掩码是1的部分,表示网                                 络位,是0的部分表示主机位。

IP地址:192.168.0.107
子网掩码:255.255.255.0
192.168.0.107:
11000000.10101000.00000000.01101011
255.255.255.0
11111111.11111111.11111111.00000000

注意:在同一个网段内的IP地址能够直接通信

                                4. 一个局域网内能容纳主机的个数:2^主机位 – 2
                                    网段号(网络位不变,主机位全为0)不能使用
                                    广播地址(网络位不变,主机位全为1)不能使用

网络类别 最大可指派的网络数 第一个可指派的网络号 最后一个可指派的网络号 每个网络中最大主机数
A 126 1 126 16777214
B 16383 128.1 191.255 65534
C 2097151 192.0.1 223.255.255 254

                                5.IP地址的分类:

A类:1.0.0.0 – 126.255.255.255
子网掩码:255.0.0.0
管理超大规模型网络
B类:128.0.0.0 – 191.255.255.255
子网掩码:255.255.0.0
管理大中规模型网络
C类:192.0.0.0 – 223.255.255.255
子网掩码:255.255.255.0
管理中小规模型网络
D类:224.0.0.0 – 239.255.255.255
子网掩码:255.255.255.0
用于组播通信
E类:240.0.0.0 – 255.255.255.255
子网掩码:255.255.255.0
用于实验

                                6.公有地址和私有地址

                                        1.公有地址:能够直接上互联网的地址

                                        2.私有地址:不能直接上互联网的地址

                                

A类私有IP地址:10.0.0.0 –  10.255.255.255

B类私有IP地址:172.16.0.0  –  172.31.255.255

C类私有IP地址:192.168.0.0 – 192.168.255.255

                       

                        2.IPV6协议       
                       3. ARP协议:根据IP地址获取MAC地址
                        4.RARP协议:根据MAC地址获取IP地址
                        5.跨局域网通信使用IP地址,局域网内部通信使用MAC地址。

2.网络的配置及命令

1.虚拟机网络的2种工作模式

        1.桥接模式

                1.Ubuntu与Windows网络相互独立,每个系统会单独分配一个IP地址

                2.可以作为局域网的服务器

                3.作为服务器端必须使用桥接模式,

        2.NAT模式 

                1. Ubuntu与Windows网络关联,Ubuntu相当于Windows一个软件,UbuntuIP地址是虚                 拟出来的,无法作为服务器

                2. 无法作为局域网服务器

                3. 作为客户端所用优先选择NAT模式,因为Windows有网,Ubuntu就有网

2.ifconfig命令

查看网卡IP地址
ifconfig
ifconfig 网卡名 IP地址/24 up
#将ens33网卡设置为192.168.0.108,子网掩码设置为255.255.255.0启动网卡
ifconfig ens33 192.168.0.108/24 up
#关闭/开启网卡
ifconfig 网卡名 down/up

3.ping命令

测试与某个IP地址是否能够连通
ping www.baidu.com

4.网络配置方法:

1. 将虚拟机网卡设置为桥接模式

2.将桥接网卡设置成无线网卡

3.将网卡配置文件修改为自动获取IP地址

        1.打开配置文件

sudo vim /etc/network/interfaces

        2.修改配置文件内容为:

  auto lo

  iface lo inet loopback

  auto ens33

  iface ens33 inet dhcp

        3.重启虚拟机

sudo shutdown -r now

4.测试与百度是否ping通

ping www.baidu.com

3.UDP通信       

1.套接字

2.函数接口:

        1.socket

1 int socket(int domain, int type, int protocol);

2 功能:

3      创建一个用来进行套接字通信的终端节点

4  参数:

5      domain:AF_INET      IPv4协议族

6      type:SOCK_DGRAM     数据报套接字

7      protocol: 0        UDP通信

8  返回值:

9      成功返回新的文件描述符

10      失败返回-1

        2.sendto

1  ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,

2                       const struct sockaddr *dest_addr, socklen_t addrlen);

3  功能:

4      向另一个套接字发送信息

5  参数:

6      sockfd:使用socket创建获得套接字

7      buf:发送内容的空间的首地址

8      len:发送数据的长度

9      flags:发送的属性,默认为0

10      dest_addr:目的IP的空间的首地址

11      addrlen:目的IP的大小

12  返回值:

13      成功返回发送的字节数

14      失败返回-1

        3.htons

1 uint32_t htonl(uint32_t hostlong);

2 uint16_t htons(uint16_t hostshort);

3 uint32_t ntohl(uint32_t netlong);

4 uint16_t ntohs(uint16_t netshort);

5 功能:

6 本地字节序与网络字节序的转换

7 h:host 本地

8 n:net 网络

9 l:long 长整型 IPv4

10 s:short 短整型 IPv4

11 htons:将本地字节序转换为网络字节序

4.inet_addr

1  in_addr_t inet_addr(const char *cp);

2  功能:

3      将字符串IP地址转换为32位的IP地址

4  参数:

5      cp:字符串IP地址

6  返回值:

7      32位结构体IP地址

赞(0)
未经允许不得转载:网硕互联帮助中心 » 0基础学习Linux——Linux软件编程——网络
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!