This is my study note of TCP/IP.

基础

TCP\IP 的具体含义

字面上来看就是指TCP、IP这两种协议,但很多情况下只是指我们用到IP协议的统称,具体来说IP、IMCP、TCP、UDP等都属于TCP/IP协议。TCP/IP泛指这些协议,有时候也称TCP/IP网际协议群。

Alt text

数据包

每个分层中都会对所发送的数据加一个首部。

Alt text

网络中传输的数据包由两部分组成:一部分是协议所要用到的首部,另一部分是上一层传过来的数据。首部的结构由协议的具体规范详细定义。

数据处理流程

  • 应用程序处理
    1
    2
    1.对数据进行编码处理相当于OSI的表示层。
    2.编码完的数据不会立即发送出去,何时建立通行以及何时发送数据是靠会话层决定的。
  • TCP模块的处理
    1
    根据应用的指示,建立端到端的连接,并将数据发送到对端,此时数据最前端要加入TCP、UDP首部。
  • IP模块的处理
    1
    2
    IP将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、端口号、协议号进行通信识别的例子:

Alt text
Alt text

重发超时的确定

1.重发超时是指在重发数据之前,等待确认应答到来的那个特定时间间隔。
2.数据被重发之后若还是收不到确认应答,则进行再次发送。此时,等待确认应答的时间将会以2倍、4倍的指数函数延长。
3.数据也不会被无限、反复地重发。达到一定重发次数之后,如果仍没有任何确认应答返回,就会判断为网络或对端主机发生了异常,强制关闭连接。并且通知应用通信异常强行终止。

tcp传输利用窗口控制提高速度

正常情况下TCP传输是以段为单位,每次发送一个段进行一次确认应答的处理。这样有一个缺点就是包的往返时间越长通信性能越低。为了解决这个问题,tcp引入了窗口的概念,不再以段为单位,而是打包多个段,以窗口的形式发送,如下(窗口大小就是指无需等待确认应答而可以继续发送数据的最大值):

Alt text

窗口的重发控制

  • 确认应答未能返回的情况
    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
    2
    ARP 是一种解决地址问题的协议。以目标 IP 地址为线索,用来定位下一个应该接收数据分包的网络设备对应的 MAC 
    地址(注意:只适用IPV4)。
  • ICMP
    1
    2
    ICMP 的主要功能包括,确认 IP 包是否成功送达目标地址,通知在发送过程当中 IP 包被废弃的具体原因,改善网络
    设置等。
  • DHCP
    1
    实现自动设置 IP 地址、统一管理 IP 地址分配。
  • NAT
    1
    是用于在本地网络中使用私有地址,在连接互联网时转而使用全局 IP 地址的技术。
  • 路由
    1
    2
    根据路由控制表实现将数据包发送到对端目标IP地址,有手动设置(静态设置)和与其他路由器相互交换信息时自动刷新
    (动态设置)两种。
  • 交换机
    1
    交换机是根据MAC地址表转发数据的。