提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
今天对网络编程Socket的TCP,UDP进行了回顾,并上网学习了,以下大部分截图在网上学习的视频中截图,记录一下:
一、socket是什么?
socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。我的理解就是Socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭),这些函数我们在后面进行介绍。
Socket又称为套接字,它是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。
socket建立计算机与计算机之间的连接,建立连接之后能够发送数据包
二、详解
1.网络传输
在建立连接之前要得知ip地址和端口号
ip地址:每一台计算机的网络标识,在同一个网络内是唯一的
端口号:应用程序的标识,一个端口号对应一个应用程序
2.网络模型
3.TCP和UDP对比
TCP(Transmission Control Protocol)可靠的、面向连接的协议、传输效率低全双工通信(发送缓存&接收缓存)、面向字节流。使用TCP的应用:Web浏览器;文件传输程序。
UDP(User Datagram Protocol)不可靠的、无连接的服务,传输效率高(发送前时延小),一对一、一对多、多对一、多对多、面向报文(数据包),尽最大努力服务,无拥塞控制。使用UDP的应用:域名系统 (DNS);视频流;IP语音(VoIP)。
TCP:面向连接,客户端与服务器之间经历三次握手采用字节进行数据的传输,较为安全,但效率比UDP慢
UDP:面向无连接,丢包,每一个数据包大小限制64k以内,不安全
#HTTP协议底层就是采用TCP协议
TCP
三次握手
建立连接后,如果服务端挂了,如何断开连接
四次挥手
案例
UDP
案例
总结
所看视频链接:https://www.bilibili.com/video/BV1SV411t7Rq?p=1