一、基础知识
本部分作为Socket编程的基础知识的补充,讲述网络模型和网络协议介绍.对于网络协议非常清楚的大侠可以直接跳过,也可作为基本的了解。作为网络的理解,自己是在自己的理解基础之上进行的总结,难免也有不足之处,望多提意见共同探讨交流。
1、TCP/IP协议模型由TCP协议和IP协议连个协议构成,数据的模型包括数据链路层、网络层、传输层和应用层。具体模型如下所示:
应用层 | 包括各种应用程序和协议,如HTTP、HTTPS、FTP等 |
传送层 | 包括传输控制协议和用户数据报协议 |
网络层 | 包括因特网协议、地址解析协议、反向解析协议和因特网控制消息协议 |
数据链路层 | 负责将数据编译成为比特流,并且准备开始物理传输,纠正传输中的错误 |
1)套接字作为应用层到传送层的接口
2)下三层的具体实现作为Windows内核的一部分。
3)理解TCP/UDP协议是套接字编程的核心和重点。
2、协议介绍
1)UDP协议是一个面向无连接的传输协议,其具体的特点如下:
- 提供无连接服务,即在发送数据之前无需建立连接;
- 不能确保最终数据是否到达,也就是说数据的传输是不确定的。
- 传输的效率较高;
2)TCP协议是一个面向连接、可靠的和基于字节流的传送层通信协议。其具体的特点如下:
3)TCP的链接过程需要三路握手,首先建立连接,其次客户端发送链接请求;最后客户端发送确认请求。
- 面向连接的服务
- 提供可靠的服务
- 提供流量控制
- 连接是全双工的
4)终止链接,需要双方分别的发送和确认,最终完成关闭的动作。
5)主机和网络服务是一对多的关系,主机使用不同的端口号区分不同的网络服务。