TCP/IP模型和OSI参考模型的对应关系:
端口
- 为了标识通信实体中进行通信的进程(应用程序),TCP/IP协议提出了协议端口的概念
- 端口是一种抽象的软件结构(包括一些数据结构和I/O缓冲区)。应用程序通过系统调用和某端口建立连接(binding)后,传输层传给该端口的数据都被相应的进程所接收,相应进程发给传输层的数据都通过该端口输出
- 端口用一个整数型标识符来表示,即端口号。端口号跟协议相关,TCP/IP传输层的两个协议TCP和UDP是完全独立的的两个软件模块,因此各自的端口号也相互独立
- 端口使用一个16位的数字来表示,它的范围是0~65535,1024以下的端口号保留给预定义的服务,例如,http使用80端口
套接字(Socket)
- Socket的出现,使得程序员可以很方便的访问TCP/IP,从而开发各种网络应用的程序
2.套接字存在于通信区域中,通信区域也叫地址族,他是一个抽象的概念,主要用于通过套接字通信的进程的共有特性综合在一起。套接字通常只与同一个区域的套接字交换数据。
套接字的类型
-
流式套接字(SOCK_STREAM)
提供面向连接的,可靠的数据传输服务,数据无差错,无重复的发送,且按发送的顺序接收,基于TCP协议 -
数据保式套接字(SOCK_DGRAM)
提供无连接的服务,数据包以独立包形式发送,不提供无错误的保证,数据可能丢失或重复,且接收顺序混乱,基于UDP协议 -
原始套接字(SOCK_RAW)