简单的网络知识
端口
端口号
端口就好一个房子的门,是出入这间房子的必经之路
如果一个程序需要收发网络数据,那么就需要有这样的端口
在linux系统中,端口可以有65536(2的16次方)个之多!
端口是通过端口号来标记的,端口号只有整数,范围是从0到65535
注意:端口数不一样的linux系统不一样,还可以手动修改
端口是怎样分配的
端口号不是随意使用的,而是按照一定的规定进行分配。
知名端口
IIS(HTTP):80
SQLServer:1433
Oracle:1521
MySQL:3306
FTP:21
SSH:22
Tomcat:8080
动态端口(Dynamic Ports)
动态端口的范围是从1024到65535
之所以称为动态端口,是因为它一般不固定分配某种服务,而是动态分配。
动态分配是指当一个系统程序或应用程序程序需要网络通信时,它向主机申请一个端口,主机从可用的端口号中分配一个供它使用。
当这个程序关闭时,同时也就释放了所占用的端口号
小总结
端口有什么用呢 ? 我们知道,一台拥有IP地址的主机可以提供许多服务,比如
HTTP(万维网服务)、FTP(文件传输)、SMTP(电子邮件)等,
这些服务完全可以通过1个IP地址来实现。
那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因为IP地址与网络服务的关系是一对多的关系。
实际上是通过IP地址+端口号来区分不同的服务的。
需要注意的是,端口并不是一一对应的。比如你的电脑作为客户机访问一台WWW服务器时,WWW服务器使用80端口与你的电脑通信,但你的电脑则可能使用3457这样的端口。
Socket简介
网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket
建立网络通信连接至少要一对端口号(socket)。
socket本质是编程接口(API),对TCP/IP的封装
,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口
HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。
TCP介绍
TCP协议,传输控制协议(英语:Transmission Control Protocol,缩写为 TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。
TCP通信需要经过创建连接、数据传送、终止连接三个步骤。
TCP通信模型中,在通信开始之前,一定要先建立相关的链接,才能发送数据,类似于生活中,打电话
TCP特点
面向连接
通信双方必须先建立连接才能进行数据的传输,双方都必须为该连接分配必要的系统内核资源,以管理连接的状态和连接上的传输。
双方间的数据传输都可以通过这一个连接进行。
完成数据交换后,双方必须断开此连接,以释放系统资源。
这种连接是一对一的,因此TCP不适用于广播的应用程序,基于广播的应用程序请使用UDP协议。
可靠传输
TCP采用发送应答机制
TCP发送的每个报文段都必须得到接收方的应答才认为这个TCP报文段传输成功
超时重传
发送端发出一个报文段之后就启动定时器,如果在定时时间内没有收到应答就重新发送这个报文段。
TCP为了保证不发生丢包,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的包发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据包就被假设为已丢失将会被进行重传。
错误校验
TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。
流量控制和阻塞管理
流量控制用来避免主机发送得过快而使接收方来不及完全收下。
TCP短连接
client 向 server 发起连接请求
server 接到请求,双方建立连接
client 向 server 发送消息
server 回应 client
一次读写完成,此时双方任何一个都可以发起 close 操作
操作步骤:
1 |
|
TCP长连接
client 向 server 发起连接
server 接到请求,双方建立连接
client 向 server 发送消息
server 回应 client
一次读写完成,连接不关闭
操作步骤:
1 |
|
TCP长/短连接的优点和缺点
长连接可以省去较多的TCP建立和关闭的操作,减少浪费,节约时间。
对于频繁请求资源的客户来说,较适用长连接。
client与server之间的连接如果一直不关闭的话,会存在一个问题,
随着客户端连接越来越多,server早晚有扛不住的时候,这时候server端需要采取一些策略,
如关闭一些长时间没有读写事件发生的连接,这样可以避免一些恶意连接导致server端服务受损;
如果条件再允许就可以以客户端机器为颗粒度,限制每个客户端的最大长连接数,
这样可以完全避免某个蛋疼的客户端连累后端服务。
短连接对于服务器来说管理较为简单,存在的连接都是有用的连接,不需要额外的控制手段。
但如果客户请求频繁,将在TCP的建立和关闭操作上浪费时间和带宽。
TCP三次握手四次挥手
TCP/IP协议(族)
早期的计算机网络,都是由各厂商自己规定一套协议,IBM、Apple和Microsoft都有各自的网络协议,互不兼容
为了把全世界的所有不同类型的计算机都连接起来,就必须规定一套全球通用的协议,为了实现互联网这个目标,互联网协议族(Internet Protocol Suite)就是通用协议标准。
因为互联网协议包含了上百种协议标准,但是最重要的两个协议是TCP和IP协议,所以,大家把互联网的协议简称TCP/IP协议(族)
常用的网络协议如下图所示:
网际层也称为:网络层
网络接口层也称为:链路层
OSI参考模型