TCP/IP分层模型中,通信界定地址:
物理地址:在交换机中进行通信的, 以太网地址,MAC地址; 功能:真正的用于本地通信的地址; 使用范围:本地局域网内部且不跨路由设备; 逻辑地址:(IP地址) 在TCP/IP协议栈中,逻辑地址被定义为IP地址; 功能:界定主机到主机的通信地址:点到点通信;逻辑地址仅用于主机定位,不用于真正的通信; 使用范围:全球互联网; 逻辑端口号:(确定每个进程的标识符) 在TCP/IP协议栈中 功能:界定进程到进程的通信; 逻辑端口号的组成: 16bits二进制构成:其表示范围0-65535 0:特殊端口号,不做定义; 1-1023:固定服务端口(一般用于服务器端); FTP:20/TCP,21/TCP SSH:22/TCP Telnet:23/TCP SMTP:25/TCP DNS:53/TCP,53/UDP DHCP: DHCPS:67/UDP DHCPC:68/UDP TFTP:69/UDP HTTP: 80TCP POP3: 110/TCP IMAP4: 143/TCP SNMP: 161/UDP,162/UDP HTTPS: 443/TCP 1024-45121:半固定服务端口;也可以称为注册端口(一般用于本地); mysql:3306/TCP Tomcat:8080/TCP,8009/TCP,8005/TCP,8040/TCP Memcached:11211/TCP 其余端口:可自由分配使用的端口号; 逻辑地址:逻辑端口号——套接字(Socket) 能够界定特定主机上的特定应用程序服务进程:TCP协议: 1.面向连接: 1)通信开始之前,必须先建立通信双方主机之间的TCP通信连接; 2)在整个通信过程中,必须维持通信双方主机之间的TCP通信连接的稳定性; 3)在通信结束之后,必须先拆除通信双方主机之间已建立的TCP通信连接 TCP协议建立连接的过程:三次握手 a)通信请求发起方,创建一个无数据报文,将其中的SYN标志位 置1; b)接收方在收到建立连接的请求之后,根据该报文的目标端口号判断本地是否有监听此套接字的进程;如果有,即返回确认消息;创建一个无数据报文,将其中的ACK标志位 置1,同时将SYNC标志位 置1,用户向对方请求建立同步连接; c)通信请求发起方,在创建一个无数据报文,将其中的ACK标志位 置1; TCP协议拆除连接的过程:四次挥手 a)由任何一方,在数据传输结束之后,向另一方发送一个自己创建的无数据报文,其中FIN标志位 置1; b)收到连接断开请求的一方,会对此请求信息予以确认,创建一个无数据报文,其中ACK标志位 置1; c)此前收到连接断开请求的一方,会再次创建一个无数据报文,将其中的FIN标志位 置1,向对方请求断开连接; d)对方在收到此请求报文之后,在创建一个无数据报文,将其中的ACK标志位 置1;确认断开连接的请求; TCP协议的有限状态机(TCP FSM) 客户端: 客户端的状态可以用如下的流程来表示: 服务器: 服务器的状态可以用如下的流程来表示:TCP协议首部: 第一行: 第一字段:源端口号,16bits; 第二字段:目标端口号,16bits;可与手动指定,可以通过 /etc/services文件判断自动解析应用层协议获得; 第二行: 序列号:TCP协议将大数据报文分段的顺序编号,取值范围0~2^32-2;默认情况下,第一个数据段的序列号为随机选择,以后的数据段的序列号通过计算得到; 第一段:随机产生 后续其他数据段:前一数据段的数据段序列号 + 前一数据段的数据部分大小 + 1; 第三行: 确认号(下一段的序列号): 接收到的最后一个数据段的下一个数据段的序列号;取值范围1~2^32-1 第四行: 第一字段:4bits报文首部长度,通常报文首部长度为24Bytes-60Bytes; 第二字段:标志位;12bits 前三位:保留位; 4-6位:特殊标志位; URG:紧急指针标志位;优先转发标志位;URG置1,后面的16bits的紧急指针才能生效; ACK:确认标志位;保证数据传输可靠性; PSH:推进标志位; RST:重置标志位; SYN:同步标志位;三次握手建立连接时必选的标志位; FIN:结束标志位;四次挥手拆除连接时必选的标志位; 第三字段:窗口大小16bits;一次并发传输的数据段的数量; 第五行: 第一字段:数据段校验和,16bits,保证数据的完整性; 第二字段:紧急指针,16bits,在URG标志位 置1,那个数据段更紧急; 第六行: 选项:TCP协议分段的标准;TCP协议的数据分段时间戳;...TCP协议的确认机制: 1.发送方在接受哦到接收方返回的确认数据之前,不会继续发送后续的数据段; 2.在指定的时间内,发送方没有接收到接收方返回的确认数据,则重新发送此前发送的数据段;数据传输过程: 发送方打算把应用数据发送给接收方: 1.讲给出的主机名解析为此次通信的目标主机ip地址: 2.将应用层协议解析为传输层协议+传输层端口号的组合(套接字),进而完成传输层封装; 3.如果传输层使用TCP协议,则还需要为TCP协议通信建立通信连接; 4.如果需要建立TCP连接,必须能够在网络层正确封装IP地址以及在数据链路层正确封装MAC地址; 5.在ARP缓存中,如果么没有对应的目标IP地址条目信息,则需要广播ARP解析目标主机地址; 6.解析获得目标主机的MAC地址后,则可以通过三次握手建立TCP连接; 7.为应用层应用程序提供数据发送; 8.在数据传输完成之后,需要拆除TCP连接;子网掩码(Netmask) 组成:32bits二进制组成,与IPv4的地址位数相同;以点分十进制进行表示; 作用:标识IPv4地址中的网络部分和主机部分各占多少个二进制位;凡是网络部分就用"1"表示, 凡是主机部分,就用"0"表示; A类地址的标准子网掩码:255.0.0.0 B类地址的标准子网掩码:255.255.0.0 C类地址的标准子网掩码:255.255.255.0 将IPv4的地址与其相对应的子网掩码做逻辑就与运算,得到的而结果时候: 该IPv4地址所属的网络范围; 网络地址:主机位全都是"0"的IP地址;也被称为网络名称;也可以称为逻辑网段; 定向广播地址:主机位全都是"1"的IP地址;在特定的逻辑网段中能够被应用的广播地址; 以上两个地址,通常是不能分配给主机使用的; 在一个逻辑网段中,主机位全"0"和主机位全"1"的地址,必须排除在可以使用地址范围之外; 172.16.72.1 255.255.0.0 --> 172.16.0.0 子网掩码的标识方法: 1.全掩码表示:172.16.72.1/255.255.0.0 2.前缀表示法:172.16.72./16 192.168.0.1/16 CIDR,Classless Inter-Domain Routing,无类域间路由; 10.1.1.1/28 变长子网掩码;结论: 主机通过将自身的IP地址和目标主机的IP地址分别于自己的子网掩码进行逻辑与运算, 最终得到的结果就是两台主机的逻辑网络地址; 然后将此二结果进行比较,如果相同,则表示此二主机在同一逻辑网络范围之内, 因此可以直接使用ARP协议获取对方的MAC地址,从而实现通信;如果不相同, 则意味着此二主机在不同的逻辑网络范围之中,于是必须借助于网关才能实现二主机的相同通信;网关:可以理解为一个逻辑网络的门户,或者是出入口;现在多使用路由器充当网关设备;注意:一旦数据传输经过网关等路由设备,则其数据链路层的封装格式会彻底改变;即:重新封装数据的源MAC地址及目的MAC地址;对于主机来说,在一次通信的过程中,需要使用配置在自身网络设备接口上的子网掩码判断主机与自身IP地址是否在同一逻辑网段;对于路由器来说,需要利用路由表中路由条目上个所携带的子网掩码,来判断目标主机所 在的网络地址,是否存在于本地路由表中,如果有,则按扎奥路由表指示进行转发;否则直接丢弃不予转发;