TCP/IP四层模型
在菜鸟学习之浅入网络中已经将互联网的通信过程已经说了,但是进程与进程的联系还是没有说,例如我们是怎么访问百度的,怎么QQ聊天的。此内容也是本菜鸟的自己的理解,如果有不对的地方请大神指点。百度上已经把ISO/OSI 7层模型说的很透彻了。我就不画蛇添足了,就简单说下吧。
在浅入网络中,我最多讲到了会话层,其实整个过程还有很多。
先说说7层模型下面讲到的4层。1.物理层:加一些前导码,还有一大串“0”或者“1”表示一个报文要来了。。
2.数据链路层:加上原MAC和目标MAC首部(这个目标MAC是网关的MAC,网关再把这变成路由MAC。。。)
3.网络层:加上原IP和目标IP
4.传输层:原端口和目标端口
1.IP报文
一个IP报文的内容就是这样的。(百度上全是官腔,我尽量用自己的理解)
版本号(4位)
0100(IPV4)
0110(IPV6)
IP报头长度(4位)
一个报头最长1111即15*4字节=60个字节,最短20字节(就是多少个4,每行4个字节)
服务类型(8位)
就好像是加急信和普通信一样。被定义为 PPP D T R C 0
(PPP):
000 普通(Routine)
001 优先 (Priority)
010 立即发送 (Immediate)
011 闪电般发送(Flash)
100 比闪电还要闪电(Flash Override)
101 CRI/TIC/ECP
110 网间控制(Internetwork Control)
111 网络控制(Network Control)
D 时延: 0:普通 1:尽量小
T 吞吐量:
R 可靠性:
M 传输成本:
0 保留位
IP包总长度:(16位)
所以一个IP包最大长度65535个字节
标记符:(16位)
有时候IP报太长了需要被分割。IP被切割后,为了表示不同的片来自同一个被切割的IP报文。标记符一样的就同 一个报文
偏移量:(13位)
标示符一样表示是同一个报文,偏移量则表示不同片的顺序。因为切开后,从新组合需要知道顺序
标志:(3位)
MF(More Fragment)
更多的片,表示被切割了。
DF(Don't Fragment)
没有被切割。不需要和其他片组合了。
TTL:(8位)
生存时间。在路由中被转的次数。在路由被转发n次后被丢弃。
协议:(8位)
上层的协议。(如TCP,UDP,ICMP,ICMP,IGRP,OSPF)
首部校验和:(16位)
为了确保信息传递正确
可选位():
数据():
包括上层协议的首部
逻辑地址的定义:
IPV4 0-255。
如 192.168.1.211
IPV4 有A,B,C,D,E五类地址:
A类:255.0.0.0
0 000 0001 - 0 111 1111 0到127 127用于回环 。1-126
容纳主机 2^24-2 主机位全0:网络地址 主机位全0:广播地址
B类:255.255.0.0
10 00 0001 - 10 11 1111 128到191 64个B类
C类:255.255.255.0
110 0 0001 - 110 1 1111 192到223 32个C类
D类
1110 0000 - 1110 1111
-
A类:0~127
-
B类:128~191
-
C类:192~223
-
D类:224~239,组播地址
-
E类:240~254,保留为研究测试使用
ICANN,INAN :来分配IP地址
私有地址(任何公司,区域都可以使用,但不能拿来上网的)
A类10.0.0.0/8
B类172.16.0.0/16 - 172.31.0.0/16
C类192.168.0.0/24 - 192.168.255.0/24
这些地址不会再路由器上路由的,因为这些地址没法上互联网。
路由:
R1记录了去8.0 可以转给R2,去8.1可以转给R3 ,如果找不到就转给默认路由,具体要转给谁,就需要算法啦~~~
如果某个路由接在整个网络的骨干位置。那么就得将该路由的性能提高。将相近的小网络合并成一个大网络,汇聚,超网。是为了提高路由器性能。
2.TCP(Transumission Control Protocol)
TCP(Transmission Control Protocol):有连接的(类似于打电话)
UDP(User Datagram Protocol):无连接的(类似于发短信)
dhcp,dns查询,tftp 用UDP
stmp,http,ftp, 用TCP
tcp 的 3次握手,4次挥手。
TCP报文段的首部格式:
4个字节为一行。
源端口(16位):
目标端口(16位):
序列号(32位):
确认号(32位):
首部长度(4位):
保留(6位):
URG(1位):紧急位
ACK(1位):校验位
PSH(1位):推送位 (不在缓冲中停留。赶紧从网卡中发出去)
RST(1位):重置位
SYN(1位):发起连接位
FIN (1位):分手位
窗口(16位):接收方缓存中可容纳报文的个数
校验和(16位):
紧急指针(16位): URG位为1,紧急指针有效