网络接口
1、socket 套接字 ==》BSD socket ==》用于网络通信的一组接口函数。socket api application interface
2、ip+port 地址+端口===》地址用来识别主机
端口用来识别应用程序
UDP 用户数据报
特征: 无链接 不可靠 大数据
注意:
1、数据和数据之间有边界
2、发的次数必须和收的次数相对应 并且收的长的不要少于发的字节不然后面的数据会被丢弃
3、recvfrom() 会阻塞 !
4、sendto() 不阻塞
127.0.0.1 是指自己
c/s模型 ----> client/serve模型
1、bs http https
cs http,自定义协议
2、bs 功能相对简单
cs 复杂
3、bs 客户端通用
cs 客户端专用
p2p 模型
TCP
服务器端
socket()-----bind()------listen()----accept-----read()----write()---read()---close()
listen() 进入监听状态,看有没有人接入函数
TCP端
socket()---connect()----write()----read()----close()
TCP 有链接 ---- 在发送数据之前先进行链路的创建,链接两端再进行发送数据
SYN 标志位 ACK 应答
三次握手 客户端先发出SYN 给服务器端,服务器端回复客户端
三次握手之后建立链接,两端开始发收数据
四次挥手 客户端先发出FIN信号 服务器先对之前的数据进行应答,然后滞后一点 点时间发出断开请求,并且对之前的数据进行应答。
------------------
可以一次性把数据全拿走 没有边界 ,,发和收的次数不需要对应 (可以发三次收一次全收到) //流式套接字 先发的数据一定在前面 收到的数据数取决于 recv的个数
64k的内存
发的太多太快,套接字写满之后tcp会产生 写 阻塞/
tcp中有 双缓冲区
发 和 收 分别在两个不同的空间里面。
流式套接字
:
数据有顺序
发送和接收的次数
套接字打开了两个 1、监听套接字
1对多
2、通信套接字
1对1