示意学习
http
tcp
udp
socket
定义,区别,优点
SOCKET
- 称为套接字,TCP/IP基本单元,不同主机双向通信的端点,既保存IP地址和端口,也保持通信协议。
1
- 流套接字:面向连接的TCP通信
- 数据报套接字:无连接的UDP通信
- 原始套接字:IP数据包的通信
端口:
- 端口号识别不同的进程。
TCP:
- 面向连接的,基于字节流,可靠的通信协议。
三次握手:通过三个报文段完成类似电话呼叫的连接建立过程
- 客户端发送syn报文到服务器端,发送序号为x。
- 服务器端收到报文,向客户端发送syn报文,发送序号x+1,并置发送序号为y。
- 客户端受到确认报文后,发送确认信号y+1,并置发送序号为z。至此客户端和服务器端建立连接。
传输数据
- 双方建立TCP连接,连接方都能发送和接收数据。
- tcp协议负责把数据按格式和长度发送并接受后组装。
- TCP传输数据时,数据是以字节流的形式进行传输的。
连接的终止:建立连接需要三次握手,而终止连接要经过四次握手,这是由TCP的半关闭(half-close)造成的。
TCP最主要的特点如下
- 是面向连接的协议。
- 端到端的通信。TCP连接只能有两个端点。
- 高可靠性。通过TCP连接传送的数据,能保证数据无差错、不丢失、不重复地准确到达接收方,并且保证各数据到达的顺序与其发出的顺序相同。
- 全双工方式传输。
- 数据以字节流的方式传输。
- 传输的数据无消息边界。
同步与异步:
同步工作方式是指利用TCP编写的程序执行到监听语句时,在未完成工作前不再继续往下执行,线程处于阻塞状态,
异步工作方式:程序执行到监听收语句时,不论工作是否完成,都会继续往下执行。
UDP是面向数据报的无连接的不可靠协议。
“无连接”是指通信前不必与对方先建立连接。UDP虽然不能保证数据传输的可靠性,但传输效率较高
UDP与TCP的区别
(1) UDP可靠性不如TCP
TCP包含了专门的传递保证机制,要经历三次握手。UDP并不提供数据传送的保证机制。如果出现数据报的丢失,并不做出任何检测。
(2) UDP不能保证有序传输
UDP不能确保数据的发送和接收顺序。对于突发性的数据报,有可能会乱序。
UDP的优势
(1)UDP速度比TCP快
由于UDP不需要先建立连接,传输确认,因此传输速度比TCP快得多。(适合网络音频播放、视频点播和网络会议等)
(2) UDP有消息边界
发送方UDP对应用程序交下来的报文,在添加首部后就向下直接交付给IP层。既不拆分,也不合并,而是保留这些报文的边界。使用UDP不需要考虑消息边界问题,这样使得UDP编程相比TCP,在对接收到的数据的处理方面要方便的多。在程序员看来,UDP套接字使用比TCP简单。UDP的这一特征也说明了它是一种面向报文的传输协议。
(3) UDP可以一对多传输
由于传输数据不建立连接,也就不需要维护连接状态(包括收发状态等),因此一台服务器可以同时向多个客户端传输相同的消息。利用UDP可以使用广播或组播的方式同时向子网上的所有客户进程发送消息。
速度快是UDP的首要优势