高级编程之网络编程(UDP/TCP)

本文详细介绍了网络编程中的TCP和UDP协议,包括通信连接、网络拓扑、TCP和UDP编程模型。讲解了TCP的三次握手四次挥手过程,以及UDP的无连接特性。还探讨了TCP和UDP在实际编程中的应用,如套接字API的使用、多进程并发服务器、IO模型(阻塞、非阻塞、信号驱动、异步、IO复用)以及epoll在高并发场景下的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1通信连接
一个服务器会跟多个客户端连接,他们要遵守同一个协议族才能进行数据的收发

2、网络拓扑

1局域网拓扑
客户端发送请求(输入网址)然后请求进入内核,然后经过TCP/IP协议到以太网驱动程序(网卡)然后在进入另外一个网卡,然后通过内核找到服务器端

在这里插入图片描述
2.广域网拓扑
客户应用进程,通过TCP/IP的主机,消息进入内核谈话经过层层路由器,到达另外一个TCP/IP的主机然后进入服务器应用进程
3.一个网页的传输,以及网络抓包工具wireshark 的使用
传输层网络层基本都集成在内核中,提供接口供应用层使用

TCP和UDP编程模型

1、传输层TCP和UDP
1、OSI七层模型

在这里插入图片描述
通过socket套接字把应用层的数据插入到协议栈
应用层可以直接跨过传输层直接操作网络层
2、TCP是什么
传输控制协议
向用户进程提供可靠的全双工字节流
3、UDP是什么
用户数据报协议
UDP是一种无连接的协议
2、TCP编程模型

![在这里插入图片描述](https://img-blog.csdnimg.cn/2020022615051189.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NOTU5NU0wx,size_16,color_FFFFFF,t_70在这里插入图片描述
在这里插入图片描述

用listen进行监听,accept进行睡眠等待

收到数据后回向对方发送一个确认报文,如果一直未发,可能会触发超时重发,再次发送报文

TCP的三次握手四次挥手

在这里插入图片描述
服务器必须准备号接收外来连接
客户端通过connect主动打开一个连接,此时客户端TCP将会发送一SYN分解
服务器必须确认客户的分节(收到SYN恢复ACK)
客户必须确认服务器的SYN恢复的ACK序号为SYN序号+1

ACK:确认序号的标志,ACK=1表示确认号有效,ACK=0表示报文不含确认序号信息

SYN:连接请求序号标志,用于建立连接,SYN=1表示请求连接

FIN:结束标志,用于释放连接,为1表示关闭本方数据流
第一次:客户端发送初始序号x和syn=1请求标志

第二次:服务器发送请求标志syn,发送确认标志ACK,发送自己的序号seq=y,发送客户端的确认序号ack=x+1

第三次:客户端发送ACK确认号,发送自己的序号seq=x+1,发送对方的确认号ack=y+1
在这里插入图片描述
一方数据发送完成后,才会发送FIN信号表示“我已经没有数据发送给你了”,另一方收到之后会恢复一个ACK表明已经收到消息,然

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值