Linux网络编程—tcp/ip协议族概述(补充)

1.  tcp/ip实际上是一个协同工作的通信家族,为网络数据通信提供了通路,主要分为三部分:①传输控制协议(TCP)和用户数据报协议(UDP);②Internet协议(IP);③处于TCP和UDP之上的一组应用协议;

2.  TCP:全称传输控制协议,对建立网络上用户进程间的对话负责,他确保进程之间的可靠通信,并建立连接,提供的功能如下:①监听输入对话建立请求;②请求另一网络站点对话;③可靠的发送和接收数据;④适度的关闭对话;  具有严格的内装差错检验算法确保数据的完整性,tcp是面向字节的顺序协议,意味着包内的每个字节被分配一个顺序编号,并分配给每包一个顺序号;具有特定的TCP协议头;

3.  UDP:全称用户数据报文协议,提供不可靠非连接型传输层服务,它允许在源和目的地之间传送数据,而不必在传送数据之前建立对话(偶发性不定时性连接);当接收数据时它不向发送方提供确认信息,它不提供输入包的顺序,如果出现丢失包或重份包的情况,也不会向发送方发出差错报文,不占用进程,执行速度比TCP快,但是可靠性差;具有特定的UDP协议头;

4.  IP:主要有四个功能:①数据传送;②寻址;③路由选择;④数据报文的分段;IP的主要目的是为数据输入/输出网络提供基本算法,为高层协议提供无连接的传送服务。就是说IP只封装和传递数据,但不向发送者或接受者报告包的状态,不处理所遇到的故障,只负责路由、寻址功能,相当于快递的运输司机,同时也是联网的入口; IP由协议头与协议数据两部分构成;具有特定的IP协议头;

5.  Linux中的网络编程通过socket(套接口)实现,socket是一种文件描述符;套接口socket有三种类型:

       (1)流式套接字(SOCK_STREAM),可以提供可靠的、面向连接的通讯流,对应的是TCP协议,保证了数据传输的正确性和顺序性;

       (2)数据报套接字(SOCK_DGRAM),定义了一种无连接的服务,并且不保证可靠,无差错,对应的是UDP协议;

       (3)原始套接字,主要用于新的网络协议的测试等;

6.  两种地址接口

       (1)通用地址接口

struct sockaddr
{
    u_short sa_family;  //地址族,一般采用AF_INET这个宏代表ipv4;
    char sa_data[14];  //14字节特定协议地址;
};

        (2)第二种地址接口

struct sockaddr_in
{
    short int sin_family;  //地址族,一般采用AF_INET这个宏代表ipv4;
    unsigned short int sin_port;  //端口号;区别不同的进程,比如消息发给qq还是微信;服务器的IP与端口绑定,让多个客户端找到,而客户端不绑定;
    struct in_addr sin_addr;  //,具体的IP地址,也是一个结构体,具体结构如下面;
    unsigned char sin_zero[8];  //8字节填0;
};

//具体的IP地址
struct in_addr
{
    unsigned long s_addr;  //这里是一种长整型数据,而IP地址是一种①点分十进制或者②点分字符串,需要对其进行转换才可以给该结构体成员赋值;
};

7.  地址转换函数,IP地址通常由数字加点(192.168.0.1)的形式,而在struct in_addr中使用的是IP地址是由32位的整数表示的,所以需要转换数据类型,有以下两个函数可以转换:

       (1)int inet_aton(const char * cp, struct in_addr * inp);  //ascii码转

       (2)char *inet_ntoa(struct in_addr in);

        函数里面 a 代表 ascii n 代表network.第一个函数表示将a.b.c.d形式的IP转换为32位的IP,存在在 inp指针里面。第二个是将32位IP转换为a.b.c.d的格式。

8.  字节序转换——大小端转换,统一按照大端进行网络传输,如果自己的电脑是小端,则将自己的电脑发送和接收信息后都要转换;

字节序转换函数(头文件:#include<arpa/inet.h>
htons把unsigned shorrt 类型从主机序转换到网络序
htonl把unsigned long类型从主机转换到网络序
ntohs把unsigned short 类型从网络序转换到主机序
ntohl把unsigned long类型从网络序转换到主机序
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值