欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > 网络编程复习

网络编程复习

2024/10/24 7:26:29 来源:https://blog.csdn.net/2401_83794246/article/details/140991927  浏览:    关键词:网络编程复习

 1.网络编程基础

  1.1引入

socket套接字实现主机之间的通信
cs通信模型基于socket实现,需要客户端软件来实现通信
bs通信模型基于http实现,是网页通信,不需要任何客户端软件

1.2通信协议

(1)OSI七层通信协议:物理层,链路层,网络层,运输层,会话层,表示层,应用层
(2)TCP/IP四层通信协议:网络接口层,网际层,运输层,应用层
(3)五层协议体系: 物理层,数据链路层,网络层,运输层,应用层

分层的好处:各层之间功能独立,每层的功能不需要通过上层或者下层间接得到,上层下层发生变化,不会影响这一层的功能,便于根据每层功能对每层进行查错和维护,促进标准化工作,结构上不可分割。
OSI和TCP/IP每层对比:

数据头:封包和拆包过程:

linux默认封装MTU一帧数据最大为1500字节。

1.3TCP和UDP区别

1.tcp面向有链接传输,有三次握手四次挥手机制,会给每个包编上序列号避免乱序,拥有确认包机制,有超时重传机制,有接收缓存区和发送缓存区,为了提高效率,会将多个小包数据沾成一个包发送,这种现象叫做粘包现象,具有网络拥堵检测,实时性较差,数据传输更稳定,不易造成数据丢失。
2.udp面向无连接传输,没有发送缓存区,有接收缓存区,尽最大努力传输,接收不及时会造成丢包,超过最大发送的数据大小会删掉多出的部分,实时性强,传输效率高,数据容易丢失乱序。

1.4字节序

网络字节序采用大端存储,数据低位存高地址,数据高位存低地址。

ip地址:网络号(三个字节)+主机号(一个字节),共四个字节,如:255.255.255.0
ip地址字节序转换函数:
       将主机字节序转为网络字节序: inet_addr(const char*)

        将网络字节序转为主机字节序:inet_ntoa(const char*)
端口号:占用两个字节,如:8888

端口号字节序转换函数:

        将两字节无符号整数的主机字节序转为网络字节序:htons(uint16_t hostshort)

        将两字节无符号整数的网络字节序转为主机字节序:ntohs(uint16_t hostshort)

1.5子网掩码

子网掩码是对主机号的二次划分,子网掩码将原ip划分为多个网段,每个网段绑定一定数量的子网ip地址。子网掩码会将一字节的主机号划分为四字节子网掩码:三字节网络号和一字节主机号,网络号全由1组成,主机号全由0组成。网络号可以向主机号借子网号,借来的子网号的值可以改变,因此可以将原ip划分为多个网段。C类网络默认子网掩码是255.255.255.0
子网地址 = 原ip地址&多个子网掩码(子网掩码个数取决于从主机号借用的子网号的个数)

两个特殊的ip:

        主机号全为0:标识网络的起始地址,主机不可用

        主机号全为1:全网广播地址,主机不可用

划分后最大的网段个数:2^(子网中1的个数)
划分后最大可用的主机个数:2^(子网中0的个数)-2

1.6端口号

TCP和UDP的端口号是相互独立的

可以使用的:1024~49151,就是我们平时编写服务器使用的端口号

临时端口号:49152~65535,这部分是客户端运行时候动态选择的

1.7域名

一个域名可以绑定多个ip,域名ip可通过shell指令查看:ping www.baidu.com

展示:ubuntu@ubuntu:~/test$ ping www.baidu.com
PING www.a.shifen.com (180.101.50.188) 56(84) bytes of data.
64 字节,来自 180.101.50.188 (180.101.50.188): icmp_seq=1 ttl=128 时间=8.91 毫秒
64 字节,来自 180.101.50.188 (180.101.50.188): icmp_seq=2 ttl=128 时间=13.2 毫秒
ubuntu@ubuntu:~/test$ ping www.baidu.com
PING www.a.shifen.com (180.101.50.242) 56(84) bytes of data.
64 字节,来自 180.101.50.242 (180.101.50.242): icmp_seq=1 ttl=128 时间=22.5 毫秒
64 字节,来自 180.101.50.242 (180.101.50.242): icmp_seq=2 ttl=128 时间=11.0 毫秒
通过上面的结果,可以看到百度官网的域名绑定了多个ip地址

域名结构:

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

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

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

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

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

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

        http:使用的是超文本传输协议

2.tcp和udp通信

 1.套接字

套接字socket,通信的载体,使用socket函数创建通信节点,返回该端点的文件描述符,端点中包含发送缓存区和接收缓存区。

2.tcp通信程序

1.服务器端

2.客户端

3.udp通信程序

1.服务器端

2.客户端

3.广播和组播

1.广播

2.组播

4.流式域套接字和报式域套接字

用于本地通信。

5.超时检测

6.抓包分析

7.数据库

8.静态库动态库

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com