Linux网络编程

11 篇文章 0 订阅

TCP协议的特点

TCP协议是有序的、面向连接的、可靠的字节流传输层协议

什么是字节流

字节流的意思就是说,将数据分组发送时,分组数据的大小可以以字节为单位进行调整
注:
	为什么要调整分组数据的字节数
		当网络状况不好,如果你还拼命的发送字节数很大的分组数据时,出错的可能性很高
		所以进行TCP通信时,如果TCP检测到网络不佳时,就会减少分组数据的字节数(把分组数据变小),
		网络状况好转时再逐步增加字节数,总之会根据网络的好坏来调整字节数,这个调整的机制被称为
		“滑动窗口机制”

滑动窗口机制

1)当网络不好导致数据丢失时,数据每丢失一次,分组字节数减为以前的二分之一
		比如原本1000字节,现在变为500字节。
						
2)当网络状态恢复时
		1)如果目前分组大小 < 最初大小的二分之一时,每成功发送一个字节,字节数增加12)如果目前分组大小 >= 最初大小的二分之一时,每成功发送一次,分组字节数只增加1字节,增加减缓了

UDP

DUP跟TCP不一样的,UDP的分组数据包是固定长度的数据报,并不会根据网络的好坏来进行调整

TCP协议为什么是可靠传输协议

通过三点来保证:
	第一:三次握手建立连接		
	第二:有应答机制,也就是将数据发送给对方后,对方必须应答是否发送成功	
	第三:使用“滑动窗口”机制,根据网络的好坏,控制发送的分组数据的大小

三次握手建立连接和四次挥手断开连接示意图

第一次握手
	客户端向服务器发送一次请求
第二次握手
	服务器向客户端回消息,表示收到请求
第三次握手
	客户端回复服务器,"我知道了"	

三次握手

TCP 编程模型

在这里插入图片描述

协议族

socket函数
#include <sys/types.h>
#include <sys/socket.h>

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

domian指定协议族
	你要使用的通信协议一定是属于某个协议族
type套接字类型
	说白了就是进一步指定,你想要使用协议族中的那个子协议来通信	
type的常见设置值:SOCK_STREAM、SOCK_DGRAM、SOCK_RDM、SOCK_NONBLOCK、
	SOCK_CLOEXEC SOCK_STREAM

protocol:指定协议号
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值