TCP/IP协议
This is my study note of TCP/IP.
基础
TCP\IP 的具体含义
字面上来看就是指TCP、IP这两种协议,但很多情况下只是指我们用到IP协议的统称,具体来说IP、IMCP、TCP、UDP等都属于TCP/IP协议。TCP/IP泛指这些协议,有时候也称TCP/IP网际协议群。
数据包
每个分层中都会对所发送的数据加一个首部。
网络中传输的数据包由两部分组成:一部分是协议所要用到的首部,另一部分是上一层传过来的数据。首部的结构由协议的具体规范详细定义。
数据处理流程
- 应用程序处理
1
21.对数据进行编码处理相当于OSI的表示层。
2.编码完的数据不会立即发送出去,何时建立通行以及何时发送数据是靠会话层决定的。 - TCP模块的处理
1
根据应用的指示,建立端到端的连接,并将数据发送到对端,此时数据最前端要加入TCP、UDP首部。
- IP模块的处理
1
2IP将TCP打包下来的数据和IP首部合起来作为自己的数据,在TCP首部加入自己的IP首部,IP数据包
生成后,参考路由控制表决定哪个路由或者主机接受。 - 网络接口(以太网驱动)处理
1
附上以太网首部进行传输。
- 网络接口(以太网驱动)处理
1
2其他主机通过链路接收到数据时,首先判断MAC地址是否是自己,否则丢弃,是则传给对应的模块入
IP、ARP等。 - IP模块处理
1
收到数据后首先对比自己的IP地址,如果匹配则发送给对应的模块。
- TCP模块的处理
1
2首先进行校验和,查看数据是否出错,然后根据序号接受数据,最后检查端口号。确定数据不存在问题
的话则传输给端口号识别的应用程序。 - 应用程序的处理
1
接收端应用程序会直接接收发送端发送的数据。
端口号
端口号用来识别同一台计算机中进行通信的不同应用程序,也称程序地址。
端口号的确定
- 静态方法
1
2每个应用程序都有其指定的端口号,比如0~1023就被称为知名端口号,被固定分配给HTTP等服务,
1024~49151端口可用于任何通信用途。 - 时序分配法
1
2时序分配法:服务器有必要确定监听端口号,但是接受服务的客户端没必要确定端口号。动态分配的端口号
范围在49152~65535之间。
通过IP地址、端口号和协议号进行通信识别
以下是通过IP、端口号、协议号进行通信识别的例子:
重发超时的确定
1.重发超时是指在重发数据之前,等待确认应答到来的那个特定时间间隔。
2.数据被重发之后若还是收不到确认应答,则进行再次发送。此时,等待确认应答的时间将会以2倍、4倍的指数函数延长。
3.数据也不会被无限、反复地重发。达到一定重发次数之后,如果仍没有任何确认应答返回,就会判断为网络或对端主机发生了异常,强制关闭连接。并且通知应用通信异常强行终止。
tcp传输利用窗口控制提高速度
正常情况下TCP传输是以段为单位,每次发送一个段进行一次确认应答的处理。这样有一个缺点就是包的往返时间越长通信性能越低。为了解决这个问题,tcp引入了窗口的概念,不再以段为单位,而是打包多个段,以窗口的形式发送,如下(窗口大小就是指无需等待确认应答而可以继续发送数据的最大值):
窗口的重发控制
- 确认应答未能返回的情况
1
这种情况下不需要进行重发,少数应答未能返回时可以根据下次应答进行确认。
- 某个报文段丢失
1
2此时会一直重新发送丢失的那块报文段的确认应答信号,此时超过三次接收到同样的信号,说明报文丢失,就会对
数据进行重发。
IP协议
组成
IP 地址由网络和主机两部分标识组成,网络标识在数据链路的每个段配置不同的值,而相同段内相连的主机必须有相同的网络地址。IP 地址的“主机标识”则不允许在同一个网段内重复出现。
分类
- A类IP地址
1
A 类 IP 地址是首位以 “0” 开头的地址,0.0.0.0~127.0.0.0为A类网络地址,A类地址后24位相当于主机标识。
- B类IP地址
1
B 类 IP 地址是前两位 “10” 的地址。128.0.0.0~191.255.0.0为B类网络地址,B类地址后16位相当于主机标识。
- C类IP地址
1
C 类 IP 地址是前两位 “110” 的地址。192.0.0.0~223.255.255.0为C类网络地址,C类地址后8位相当于主机标识。
- D类IP地址
1
D 类 IP 地址是前两位 “1110” 的地址。224.0.0.0~239.255.255.255为D类网络地址,D类IP地址没有主机标识,常用于多播。
IP多播
1.多播用于将包发送给特定组内的所有主机。由于其直接使用 IP 地址,因此也不存在可靠传输。
2.相比于广播,多播既可以穿透路由器,又可以实现只给那些必要的组发送数据包.
3.多播使用 D 类地址。因此,如果从首位开始到第 4 位是 “1110”,就可以认为是多播地址。而剩下的 28 位可以成为多播的组编号。
4.对于多播,所有的主机(路由器以外的主机和终端主机)必须属于 224.0.0.1 的组,所有的路由器必须属于 224.0.0.2 的组。
IP相关技术
- DNS
1
例如我们平时通过www.baidu.com搜索百度,就是用DNS域名解析器将www.baidu.com转换为对应的IP进行查找。
- ARP
1
2ARP 是一种解决地址问题的协议。以目标 IP 地址为线索,用来定位下一个应该接收数据分包的网络设备对应的 MAC
地址(注意:只适用IPV4)。 - ICMP
1
2ICMP 的主要功能包括,确认 IP 包是否成功送达目标地址,通知在发送过程当中 IP 包被废弃的具体原因,改善网络
设置等。 - DHCP
1
实现自动设置 IP 地址、统一管理 IP 地址分配。
- NAT
1
是用于在本地网络中使用私有地址,在连接互联网时转而使用全局 IP 地址的技术。
- 路由
1
2根据路由控制表实现将数据包发送到对端目标IP地址,有手动设置(静态设置)和与其他路由器相互交换信息时自动刷新
(动态设置)两种。 - 交换机
1
交换机是根据MAC地址表转发数据的。