【Linux C | 网络编程】基础概念

一、IP和端口

1、IP地址

用来标识一台电脑的地址,它由四个字节组成,我们平时看到的192.168.100.30是把IP地址的四个字节按字节单独取出来显示的,在电脑中这个四个数字是存在一个32位的无符号整数中的,所以它的数值一般比较大

2、端口

每台电脑上有很多需要上网的程序,这些程序都是同一个IP地址,那如何找到具体的某一个程序呢?这就需要给程序分配专门的端口,这样想给某个程序发送数据的时候,就只需要使用IP+【端口】就可以定位到程序。在C语言中端口用一个16位的无符号整数来描述,所以端口的取值范围是0-65535,但是系统已经占用了3000以下一部分端口,为了防止冲突,一般我们不使用3000以下的端口

二、osi七层模型、tcp/ip四层模型

1、iso的基础概念

OSI是Open System Interconnect的缩写,意为开放式系统互联。其各个层次的划分遵循下列原则:

    (1)同一层中的各网络节点都有相同的层次结构,具有同样的功能。

    (2)同一节点内相邻层之间通过接口进行通信。

    (3)七层结构中的每一层使用下一层提供的服务,并且向其上层提供服务。

    (4)不同节点的同等层按照协议实现对等层之间的通信。

2、结构

3、各层的功能和解释

osi模型

1、物理层:负责原始数据比特流的传输,处理电气、光学和物理传输介质

2、数据链路层:提供对物理层的透明传输,将原始比特流转换为数据帧、并提供点对点的可靠传输。

3、网络层:负责在不同网络之间进行路由选择和分组转发,实现数据包的跨网络传输。

4、传输层:提供端对端TCP)或者不可靠传输(UDP),在网络中的不同主机之间建立可靠的数据传输连接。

5、会话层:负责建立、管理和终止会话(通信会话),包括对数据流的同步和数据扩展。

6、表示层:处理数据的表示方式,包括编码、压缩、解密等操作。

7、应用层:为用户提供网络服务,包括文件传输、电子邮件、远程登录等应用。

tcp/ip四层模型
1、网络接口层:负责将二进制流转换为数据帧,并进行数据帧的发送和接收。数据帧是网络信息传输的基本单元,ARP和RARP协议
2、网络层:负责将数据帧封装成IP数据报,同时负责选择数据报的路径,即路由,IP和ICMP协议
3、传输层:负责端到端之间的通信会话连接与建立,传输协议的选择根据数据传输方式而定,UDP和TCP协议
4、应用层:负责应用程序的网络访问,这里通过端口号来识别各个不同的进程,FTP、TELNET、DNS、SMTP、POP3 协议

三、字节序

字节在内存中排列的顺序

测试程序

int main()
{
     u_int16_t y = 1;
     u_int8_t* z =  (u_int8_t*)&y;//把y的地址转成u_int8_t类型
     printf("%u\n",*z);
     return 0;
}

经过测试,输出1000000 00000000,数据的低位存放在内存的低位,也就是数据的增长方向与地址的增长方向相同。电脑规定这样的字节排列的顺序叫做小端字节序。反过来存储就是大端字节序。

在网络编程中,要求小端存储。

那么如何将大端字节序转为小端字节序呢?

int main()
{
     u_int16_t y = 1;

     y = y<<8 | y>>8

     printf("%u\n",y);
     return 0;
}

可以通过这种简单的方式实现,

当然应该会有相应功能的函数:在C语言中,一些库函数提供了字节序转换的支持,其中最常见的是htonl(host to network long)和ntohl(network to host long)。这两个函数分别用于将主机字节序转换为网络字节序和将网络字节序转换为主机字节序。(?)

四、三次握手(建立连接)、四次挥手(终止连接)、TCP状态(重点)

参考https://blog.csdn.net/wkd_007/article/details/135890780

大神的文章解释的非常详细,记得理解透。

五、总结

刚开始接触网络编程,基本概念比较模糊;以上内容要反复观看,牢记于心。

(此文章是当时的学习笔记,用于后续复习)

  • 51
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值