Linux网络编程TCP

TCP/IP协议

TCP/IP 协议栈是一系列网络协议(protocol)的总和,是构成网络通信的核心骨架,它定义了电子设备如何连入因特网,以及数据如何在它们之间进行传输。

OSI 7层模型和TCP/IP四层网络模型对应关系

计算机网路基础的知识不过多讲解,主要是让大家明白接下来的Linux网络编程数据流属于那一层,具体如下图

TCP/IP协议数据流示意图

我们接下来讲解的Linux网络编程Tcp协议是属于传输层的协议

Linux Socket 网络编程

TCP协议

TCP是面向连接的可靠的传输层协议。

TCP编程

Linux中的网络编程是通过socket接口来进行的。socket是一种特殊的I/O接口,它也是一种文件描述符。常用于不同机器上的进程之间的通信,当然也可以实现本地机器上的进程之间通信。

使用TCP协议的流程图

根据流程图逐一讲解API接口.

服务端API接口

socket

#include <sys/socket.h>
int socket(int family //协议簇 一般 AF_INET PF_INET
 ,int type   //套接口类型 SOCK_STREAM(字节流套接口)
 ,int protocol);  //非原始套接口,参数为 0

套接口类型:

SOCK_STREAM(字节流套接口)

SOCK_DGRAM(数据报套接口)

SOCK_RAW(原始套接口)

示例:

listenfd = socket(AF_INET,SOCK_STREAM,0);

bind

为套接字分配一个本地IP和协议端口

#include <sys/socket.h>
int bind(int socket
, const struct sockaddr *address//协议族地址
,socklen_t address_len); //协议族长度  

address: 协议族地址,通用的socket地址

通用的socket地址不是很好用,所以Linux为各个协议族提供了专门的socket地址结构体

UNIX本地协议族

struct sockaddr_un {
 sa_family_t sa_family;
 char sun_path[100];
}

TCP/IP协议族

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
linux C语言 网络编程教程及源码 一、网络应用层编程 1、Linux网络编程01——网络协议入门 2、Linux网络编程02——无连接和面向连接的区别 3、Linux网络编程03——字节序和地址转换 4、Linux网络编程04——套接字 5、Linux网络编程05——C/S与B/S架构的区别 6、Linux网络编程06——UDP协议编程 7、Linux网络编程07——广播 8、Linux网络编程08——多播 9、Linux网络编程09——TCP编程之客户端 10、Linux网络编程10——TCP编程之服务器 11、Linux网络编程11——tcp、udp迭代服务器 12、Linux网络编程12——tcp三次握手、四次挥手 13、Linux网络编程13——connect()、listen()和accept()三者之间的关系 14、Linux网络编程14——I/O复用之select详解 15、Linux网络编程15——I/O复用之poll详解 16、Linux网络编程16——I/O复用之epoll详解 17、Linux网络编程17——tcp并发服务器(多进程) 18、Linux网络编程18——tcp并发服务器(多线程) 19、Linux网络编程——tcp高效并发服务器(select实现) 20、Linux网络编程——tcp高效并发服务器(poll实现) 21、Linux网络编程——tcp高效并发服务器(epoll实现) 二、网络底层编程(黑客模式) 1、Linux网络编程1——啥叫原始套接字 2、Linux网络编程2——原始套接字编程 3、Linux网络编程3——原始套接字实例:MAC头分析 4、Linux网络编程4——原始套接字实例:MAC地址扫描器 5、Linux网络编程5——IP数据报格式详解 6、Linux网络编程6——TCP、UDP数据包格式详解 7、Linux网络编程7——原始套接字实例:发送UDP数据包 8、Linux网络编程8——libpcap详解 9、Linux网络编程9——libnet详解

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值