2024年C C++最新网络编程套接字_网络编程如何给套接字分配地址,2024年最新C C++ui基础

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 认识IP地址,端口号,TCP协议和UDP协议的区别,网络字节序等网络编程的基本概念
  • 学习socket api的基本用法
  • 能够实现一个简单的UDP网络程序
  • 能够实现一个简单的TCP网络程序,并且优化:多进程版本和多线程版本
  • TCP协议和UDP协议的区别
本节重点需要掌握的是:

这里写图片描述

基本概念

1. 认识IP地址
  • IP地址是在IP协议中,用来标识网络中的不同主机的地址
  • IP协议有两个版本,IPv4 和 IPv6 (默认指的是IPv4)
  1. 对于IPv4来说,ip地址是4字节,32位的整数
    表示为点分十进制格式,4个组,一个组8个位(用十进制表示)用点分割的每一个数字表示一个字节,范围是0~255
    eg:192.168.0.1
  2. 对于IPv6来说,ip地址是128位的整数
    表示方式:将128位分为8个组,一个组16位(写成4个十六进制数)
    eg: 31da:1d3:0:2f3b:2aa:ff:fe28:9c5a

源IP地址和目标IP地址是基本不变的地址 下面用唐僧师徒四人西天取经的例子来解释一下:

整个取经的过程中:

  1. 源IP地址(长安)——>目标IP地址不变(西天),这整个过程中一个不变的地址
  2. 到了翠云山芭蕉洞,人家会问:你从哪到哪里去?这个时候有两个回答,两个地址:第一个:从长安来去西天取经,源IP地址(长安)——>目标IP地址不变(西天);第二个:上一站(火焰山)——>下一站(积雷山摩云洞),这是在这个过程中需要经过的路,每一站(路)都有自己的ip地址和MAC地址(物理地址)。

思考:是不是只需要有ip地址就可以通信?

同样的问题,整个西天取经过程中,直到ip地址(从长安到西天),只知道这个不能完成取经;需要直到从长安的谁那得到的信息到西天的谁那拿经(唐太宗——>如来佛);有了ip地址(长安 西天)和端口号(唐太宗 如来佛)才能完成取经。——>引出了下面的端口号的概念。


2… 认识端口号
  • 端口号(port)是传输层协议中的内容
  • IP地址+端口号就是套接字
  • 套接字通信本质就是进程间通信(而其中所看到的公共资源就是:网络)

下面对端口号做以解释:

  1. 端口号:2字节16位的整数;
  2. 端口号用来标识进程的,告诉操作系统,当前的这个数据要交给哪一个进程来处理
  3. IP地址+端口号(套接字) 能够标识网络上的某一台主机的某一个进程
  4. 一个端口号只能一个进程占用(唯一性)
端口号port和进程id的区别:
  1. 都是标识进程的,pid是表示唯一进程的,端口号也是唯一表示一个进程的
  2. 进程id: 所有的进程都有id
  3. 端口号:只有网络通信时,进程才会有端口号

另外:
一个进程不可以绑定多个端口号(只是可以绑定任意的端口号,除了知名端口号(0-1023)外),
而一个端口号能被多个进程绑定(比如tcp程序的多进程版本和多线程版本)

其中源端口号和目的端口号就是上面例子中的唐太宗和如来佛


3. TCP协议和UDP协议的区别:
  • TCP协议:传输控制协议

特点:

  1. 传输层协议
  2. 有连接
  3. 可靠传输
  4. 面向字节流
  • UDP协议:用户数据报协议

特点:

  1. 传输层协议
  2. 无连接
  3. 不可靠传输(高效传输)
  4. 面向数据报

下面是我的另外一篇文章TCP协议和UDP协议的区别:
https://blog.csdn.net/qq_37941471/article/details/80888827
文章中详细的解释了每一个特点。


4. 网络字节序

首先我们回顾一下大端和小端:

  1. 大端和小端是按照什么来划分的?
    答:字节。因为每一个地址单元对应一个字节。
  2. 地址:分为 高地址 低地址
  3. 数据:分为 高位 地位
  4. 大端模式:用高地址存放数据低位,用低地址存放数据高位
    eg: 32位的数0X12345678在CPU内存中存放的方式(假设0X4000表示低地址):
内存地址0X40000X40010X40020X4003
存放的内容0X120X340X560X78
  1. 小端模式:用高地址存放数据高位,用低地址存放数据低位
    eg: 32位的数0X12345678在CPU内存中存放的方式(假设0X4000表示低地址):
内存地址0X40000X40010X40020X4003
存放的内容0X780X560X340X12

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值