一、引言
TCP/IP协议簇是目前internet网的事实上的协议簇,它相对于国际标准化组织制定的OSI参考模型的七层协议(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层)不同,它只有四层(链路层、网络层、运输层、应用层)。分层的目的是将一个复杂的问题分解,每一层专注于一个功能点,单一职责。
二、分层
1.四层协议如下:
- 链路层,通常包括设备驱动程序、网络接口卡、传输介质。处理物理接口细节。
- 网络层,处理网络中分组的活动,点到点,点到多端。包括IP协议、ICMP协议、IGMP协议等。
- 运输层,提供两台主机上的两个应用程序的端到端通讯。包括TCP协议、UDP协议。
- 应用层,处理特定应用的细节。如HTTP协议,FTP协议,SSH协议等等。
2.常用协议概览(由下至上)
- ARP协议与RARP协议,用于转换IP地址与MAC地址。
- ARP协议:地址解析协议(Address Resolution Protocol),IP地址 ---> MAC地址;
- RARP协议:反地址解析协议(Reverse Address Resolution Protocol),MAC地址 ---> IP地址;
- IP协议是网络层主要协议,ICMP协议是IP协议的附属协议。
- IP协议:网际协议(Internet Protocol),控制点到点传输。
IP传给链路层的数据单元叫IP数据包(IP datagram)
。 - ICMP协议:网络控制消息协议(Internet Control Message Protocol),用于与其他机器交换错误报文信息与其他重要信息。
- IGMP协议:网际组管理协议(Internet Group Management Protocol),用于把一个UDP数据报多播到多个主机上。
- IP协议:网际协议(Internet Protocol),控制点到点传输。
- TCP协议与UDP协议,用于规定传输方式。都是IP协议的上层协议。
- TCP协议:传输控制协议(Transmission Control Protocol),用于提供端到端的、面向连接的、可靠的、基于字节流的通讯协议。他需要三次握手建立连接,四次握手关闭连接。
TCP传给IP的数据单元叫做TCP段(TCP segment)
。 - UDP协议:用户数据报协议(User Datagram Protocol),为应用程序发送/接收数据报(一定字节数的信息单元)。与TCP不同,UDP不是可靠的传输协议。常用的基于UDP的应用协议有DNS协议、TFTP协议等等。
UDP传给IP的数据单元叫UDP数据包(UDP datagram)
。UDP数据包首部长8字节。
- TCP协议:传输控制协议(Transmission Control Protocol),用于提供端到端的、面向连接的、可靠的、基于字节流的通讯协议。他需要三次握手建立连接,四次握手关闭连接。
- HTTP协议、DNS协议、FTP协议等,这些协议都有其具体的应用场景。
- HTTP协议:超文本传输协议(HyperText Transfer Protocol),常用的网站协议。
- DNS协议:域名解析协议(Domain Name System),只有一个用途,将常见的域名地址(如www.baidu.com)解析成IP地址(如127.0.0.1)。
- FTP协议:文件传输协议(File Transfer Protocol),正如其名,就是用来传输文件用的。
三、互联网的地址(IP地址)
internet上的接口都有唯一的一个IP地址。常用的IP地址长度是32bit,这32bit常写成4个十进制数(如127.0.0.1,每一个数最大为255)。如果一台主机有多个网络接口,那么每一个接口对应一个IP地址。所有的IP地址又可以分为三类:单播地址(目的为单个主机)
、多播地址(目的为同一组的所有主机)
、广播地址(目的为给定网络的所有主机)
。
四、端口号
端口号,是用来区分一台或多台主机上的那些应用在通信。你想啊,两台主机通信,每台主机上有n个应用程序在执行,鬼知道是哪个应用程序与哪个应用程序在通信,所以有了端口号。传输层使用16bit来表示端口号。也就是说一台机器最多有六万多个端口号(0~65535)。端口号分类如下:
- 0,为保留端口号,不使用(若发送过程不准备接受回复消息,则可以作为源端口)。
- 知名端口号(1~1023),由Internet号分配机构(Internet Assigned Numbers Authority,IANA)来管理。如 22-SSH、25-SMTP、80-HTTP等等。服务器一般通过知名端口号来标识。查看知名端口分配方式如下:
- 在Unix/Linix中,输入
less /etc/services
查看; - 查看链接:在线工具-常用端口号;
- 查看连接:*-TCP/UDP端口列表;
- 在Unix/Linix中,输入
- 零时端口号(1024~5000),系统自动分配的。客户端一般不需要关心它使用的端口号,所以采用临时端口号。
- 其他服务端口号(5001~65535),其他服务端口号(internet上不常用的服务)。如xdebug(PHP代码调试)默认端口号9000、Fiddler(http抓包工具)默认http代理端口号8888等等。
五、客户与服务模型
大部分的网络应用都是使用的客户端+服务器模型。让服务器为客户端提供一些特定服务。通常服务可以分为两类:重复型
与并发型
1.重复型服务
a. 等待一个客户端请求到来。
b. 处理该客户端请求。
c. 发送响应给该请求的客户端。
d. 返回a步骤。
复制代码
当出来一个客户端请求的时候,无法为其他客户端提供服务。
2.并发型服务
a. 等待一个客户端请求到来。
b. 启动一个新的服务(进程/线程/任务等)来处理该客户端请求。
新服务处理该请求返回响应给该请求客户端。
c. 返回a步骤。
复制代码
并发型服务优点在于可以同时处理多个请求。
都看到这里了,要不要扫二维码关注一下微信公众号林湾村龙猫,会有意外惊喜哟。