计算机如何使用IP地址:
源IPv4地址:发送数据的主机上配置的IP地址;
源IPv4的配置方式:
手动配置:直接向网卡的配置文件中添加我们认为合法的IPv4地址;
特点:
地址分配精确;
管理员的重复工作量很大;
容易发生手误导致主机无法接入网络;
自动配置:没有IP地址的计算机,通过特定协议向其他能够提供IP地址的计算机进行通信,并获得IPv4地址;
协议:
BOOTP:
启动协议
利用RARP协议向全网广播获取IP地址的需求;BOOTP服务器会从其地址池中选择一个IPv4地址,永久归这台主机使用;
DHCP:
Dynamic Host Configuration Protocol,动态主机配置协议;
地址租借规划;
每一个地址都有其对应的租约期限;
续租的规则:
当租约期限过去50%时,客户端联系服务器进行地址续租;如果续租不成功,客户端会连续尝试三次;
当租约期限过去87.5%时,客户端会放弃IP地址;重新广播是否有其他服务器能够让其继续使用之前的IP地址;
一直等等租约到期,客户端IP地址彻底被释放;客户端将试图从其他的服务器获得其他的IP地址以连接网络;
DHCP客户端地址的租借过程——四线会话:
1.客户端广播发送DHCP Discover消息,以确定网络中是否有DHCP服务器能为本机提供IP地址;
2.服务器收到DHCP Discover消息后,会检查自己的地址池,如果仍然有可用IP地址,就从中选择一个IP地址,向客户端广播发送DHCP Offer消息;
3.客户端将接收到的第一个DHCP Offer消息中的IP地址作为可选择IP地址,向网络中广播DHCP Request消息,通知服务器,选定这个IP地址作为本次通信的IP地址;
4.提供IP地址的服务器收到DHCP Request消息后,将IP地址和对应主机的物理地址临时绑定;并且开始租约计时;给客户端发送DHCP ACK消息;
不是提供该IP地址的服务器收到DHCP Request,将刚刚提供的IP地址重新放入地址池中,并给客户端发送DHCP NAK消息
目的IP地址如何给出:
手动指定:
直接在地址栏中手动书写目的主机的IP地址;
自动解析:
DNS协议:Domain Name System
在DNS服务器上,保存着特定的域名和IP地址的映射关系;可以完成地址解析的任务;
地址解析:
正向地址解析:
通过域名获得其对应的IP地址的过程;
反向地址解析:
通过IP地址反解其域名的过程;
www.baidu.com:完全限定域名(FQDN)
花生壳——DNS缓存服务器
202.99.166.4
202.99.160.68
222.222.222.222
222.222.202.202
TCP/IP协议栈分层结构:
应用层
传输层
互联网层
网络访问层(物理层、数据链路层)
传输层:
OSI第四层:端到端的连接
TCP/IP第三层:
TCP:Transfer Control Protocol,传输控制协议;
UDP:User Datagram Protocol,用户数据报协议;
UDP协议的首部格式:
端口:也称为逻辑端口,或叫协议端口;它是应用层和传输层之间的通信接口;
端口是由16bits二进制构成的数字标识;其范围为0-65535;
其中:
0:表示全部端口号,不能单独使用;
1-1023:保留端口号,
1024-64511:动态分配端口,
64512-65535:注册端口,
ssh:TCP/22
http:TCP/80
https:TCP/443
SMTP:TCP/25
POP3:TCP/110
IMAP:TCP/143
telnet:TCP/22
ftp:TCP/21
DHCP:UDP/67(Server) UDP/68(Client)
DNS:UDP/53 TCP/53
Windows系统中:C:\Windows\System32\drivers\etc\services
Linux类系统中:/etc/services
这类文件中,保存了应用层协议和传输层协议之间默认的通信接口映射关系;
源端口:16bits,发送方在封装数据的时候选择的端口号;一般来讲,客户端发送的数据的源端口号是随机选择的空闲端口;
目的端口:16bits,此次数据通信的接收方在传输层向应用层进行数据传递时所必须使用的端口号;一般来讲,数据的目的端口号是固定的;
注意:
1.一般来讲,一次往返通信过程中,两组数据的端口号会互换;
2.在使用端口时,更加在意目标端口的准确性;如果因为目标端口不明确而导致接收方无法使用正确的应用程序来处理数据,则该数据会直接被传输层协议丢弃;
数据长度:16bits,整个UDP数据报的报文长度,包括首部;
数据校验和:16bits,整个UDP数据报的校验和,一定程度上保证数据完整性;
回顾:
使用IP地址:
源地址:
目的地址:
UDP协议:
特点:
首部:
传输层协议
TCP协议:
TCP特点:
TCP/IP 协议栈的传输层
为应用程序访问的网络层
面向连接的协议
全双工模式运行
错误检查
数据包序列化
接收确认
数据恢复功能
TCP协议首部:
源端口号:16bits
目的端口号:16bits
序列号:32bits,序列号的范围:1 ~ 2^32-2
第一个数据段的序列号为随机选择;
第二个数据段的序列号:前一个数据段的序列号+前一个数据段数据部分的大小+1
...
确认号:32bits,确认号的范围:2 ~ 2^32-1
接收方用来对已经接收到的数据进行确认,并要求发送方继续传输后续数据段的标识;
一般来讲,确认号是发送方要发送的下一个数据段的序列号;
首部长度:4bits,24字节 ~ 60字节
保留标志位:3bits,暂时没有被使用
认证加密标志位:3bits
TCP特性标志位:
URG:紧急指针标志位;如果该标志位置1,该数据的转发优先级将会被提高,以使得这样的数据被优先转发;如果多个数据的URG标志位同时置1,则后面16位的紧急指针越大的,优先级越高;
ACK:与连接管理有关的确认标志位;用来响应主动发起连接的建立请求或拆除请求的那一方;
PSH:推进位,如果该标志位置1,则在接收方可以将该数据不加入缓存队列,直接交给应用程序进程进行处理;
RST:重置连接标志位;在TCP连接耗尽或者出现故障的时候,重新构建TCP连接的标志位;
SYN:同步标志位,用户在建立TCP连接的过程中,主动发生连接建立请求的那一方发起连接的信号;
FIN:结束连接标志位,如果该标志位置1,则另一方将知道此次TCP连接将被拆除,予以确认即可;
窗口尺寸:16bits,主要实现流量协商及控制,可以防止网络拥塞;
滑动窗口:
拥塞窗口:
紧急窗口:
窗口的大小,意味着我们一次可以传输的数据段的数量;
数据段校验和:16bits,保证数据的完整性的校验信息;
紧急指针:16bits,在URG标志位都置1时,用于区分其优先级;
选项:数据段分段的时间戳
TCP协议的面向连接的特性:
1.连接建立:三次握手
1) 发送方生成一个TCP首部数据,在首部中,源、目的端口由应用层协议给出;序列号为随机选择,确认号为0,标志位SYN置1;
2) 接收方收到由发送方发来的SYN请求数据之后,判断自身能否完成对方所要求的数据通信;如果可以,则返回一个由其生成的TCP首部数据;源、目的端口与之前的数据正好相反;序列号随机,确认号为对方下一个数据的序列号,SYN和ACK两个标志位同时置1;
3) 发送方在接收的对方的响应数据之后,检查其ACK标志位是否置1;如果为1再看SYN标志位是否置1,如果也是1就予以确认;随即生成第二个TCP首部数据;序列号为前一个数据的序列号+1,确认号为接收方下一个数据的序列号;ACK标志位置1;
2.拆除连接:四次挥手
1) 当所有的数据传输结束之后,由一方主动向另一方发送一个FIN标志位置1的TCP首部数据;
2) 另一方收到这样的FIN标志位置1的数据之后,回应一个ACK标志位置1的确认数据;
3) 另一方主动发出一个FIN标志位置1的TCP首部数据,请求拆除连接;
4) 主动结束方予以确认,发送ACK标志位置1的TCP首部数据;
TCP协议的流量控制特性:
被动流量控制:拥塞窗口
由于收发双方的网络资源不均衡或不对等造成的网络拥塞,导致接收方数据缓冲区溢出,使得大量的数据丢失;由接收方发送一个窗口大小为0的确认数据段给发送方,以暂停发送方的数据发送;
主动流量控制:滑动窗口
每一次双方互相通信时,都会协商窗口大小,以最小窗口为标准,发送方安装这样的窗口大小进行数据发送;
TCP协议的确认特性:
1.在发送方尚未接收到来自于接收方的确认信息之前,不会继续发生后续数据;
2.如果在一定的超时时间之内,发送方没有收到接收方发送来的确认信息,发送方会重新传输之前发生过的数据;
通过确认特性,能够保证数据的可靠性传输;
数据通信过程描述——双机互连
1.如果用户在应用程序中没有指定目标IP地址,则应用程序会自动向DNS服务器发出查询请求,以获得对应的目标主机的IP地址;
2.当前应用程序所需要使用的传输层的哪个协议?选择了TCP进行进一步封装。
3.传输层并不马上为应用层发送数据,而是由TCP协议自行生成数据段首部,通过三次握手建立TCP连接;
4.IP协议会按照正确的地址和对应格式完成数据封装,但是网络访问层需要通过MAC地址完成数据传输,因此需要查询ARP缓存中是否有对应该IP地址的MAC地址记录;
5.如果未找到该记录,TCP三次握手请求,将暂存内存;有ARP协议生成ARP请求数据包,以广播的方式发送出去;目标主机收到后,会先将源主机的MAC地址缓存下来,然后将自己的IP地址和MAC当作数据封装并以单播返回源主机;
6.源主机缓存目的主机的MAC地址,而后将TCP三次握手的请求封装并予以发送;
7.当TCP连接正确建立之后,就可以为应用程序发送数据到目的主机;
8.对于每一批次的TCP报文,目的主机都必须予以确认;
9.当所有数据报文发送完成后,通过四次挥手拆除TCP连接;
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。