【TCP/IP网络编程】(01):什么是网络编程

什么是网络编程

网络编程简单来说就是编程使得计算机之间交互数据。

硬件部分已经接入了互联网中,我们需要考虑的是软件部分。

软件部分有OS提供的套接字。

套接字

套接字用于网络数据传输,这个名字看上去很奇特。socket也是“插座”的意思,意味着可以进行连接,就像用电设备连入电网一样。

套接字的构建

首先以TCP套接字为例,我们把它比为电话机

1.调用socket

首先需要安装电话机,对socket进行创建

#include <sys/socket.h>
int socket(int domain,int type,int protocol);

2.调用bind函数

有了电话机,我们需要分配电话号码,也就是给socket分配IP地址和端口号。

#include <sys/socket.h>
int bind(int sockfd,struct sockaddr *myaddr,socklen_t addrlen);

3.调用listen函数

下一步需要连接电话线,转为接听状态

#include <sys/socket.h>
int listen(int sockfd,int backlog);

4.调用accept函数

电话来了当然是要接听的,这样才能接受对方的连接请求

#include <sys/socket.h>
int accept(int sockfd,struct sockaddr *addr,socklen_t *addrlen)

以上就是套接字编程的基本流程了。

服务端和客户端

如何区分服务端还是客户端?

简单来说,服务端就是在后方默默服务的部分,主要用于接收请求,而客户端是要和用户进行交互的部分,主要是发送请求。

客户端在请求连接的时候,也会创建客户端套接字。

#include <sys/socket.h>
int connect(int sockfd,struct sockaddr *servaddr,socklen_t addrlen);

客户端只需要:

1.调用socket函数

2.调用connect函数发送

套接字协议

前面说完了创建sokcet,接下来细说其参数

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

1.domain:套接字使用的协议族

2.type:套接字数据传输类型

3.protocol:计算机之间通信的协议

协议族

对于socket的协议族来说,PF_INET代表IPV4协议族,PF_INET6代表IPV6协议族。

第三个参数才是socket实际使用的协议。

套接字类型

1.面向连接的套接字

SOCK_STREAM,创建面向连接的套接字。(TCP)

数据会按顺序传递,并且不会消失。

并且有buffer,可以保存数据,在读取时可以一次性全部读出,也可以分几次读取。

如果明白TCP的原理,那么可以知道在缓冲区满时会停止传输,并且有重传机制。

2.面向消息的套接字

SOCK_DGRAM,创建面向消息的套接字(UDP)

速度更重要, 不按顺序,并且有可能会丢失数据。

而且数据传输有大小限制,接收数据次数与传输次数也相同。

基于UDP,所以遵循UDP的原理

协议选择

第三个参数负责选择协议。当协议族和类型确定之后,大部分情况都不需要第三个参数可为0。

除了一种情况,同一个协议族(比如IPV4)有多个数据传输方式相同的协议。

对于PF_INET+SOCK_STREAM的组合来说,只有IPPROTO_TCP一个协议。

对于PF_INET+SOCK_DGRAM的组合来说,只有IPPROTO_UDP一个协议。

地址族与数据序列

创建socket的下一步是调用bind函数,来分配IP地址和端口号。

IP地址分类IPV4和IPV6,IPV4又根据网络段和主机段分为ABCDE五类。(详解见计算机网络部分)

根据IP地址可以找到目标主机,而想要传输到对应的应用程序,就需要端口号了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值