设为首页 收藏本站
查看: 796|回复: 0

[经验分享] TCP/IP协议模型详解

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-2-15 09:52:56 | 显示全部楼层 |阅读模式
一、网络协议模型
1.OSI七层网络协议模型
      OSI七层协议(OpenSystem Interconnection):将网络连接过程分成数个层次(layer),每个层次负都有特定的独立功能,且每个层次的程序代码可以独立撰写,每个层次间的功能不会相互干扰。
  说明:
      1)越接近硬件的层次为底层(layer1),越接近应用程序的则为高层(layer7)
      2)接收端或者发送端,每一层只认识对方的同一层次的数据
      3)每层都有其独特的头部数据header,告知对方信息,其后的数据为真实数据
wKioL1a8zdihHVFrAAEDlKe_lpM729.jpg
(1)物理层Physical Layer
        定义传输设备的电压与信号等,连接数据帧转换成比特流的编码方式,最后连接实际传输介质发送/接收比特信号
(2)数据链路层Data-Link Layer
        下层为实体的定义,上层为软件封装的定义。数据链路层又可分为两层:
偏向硬件介质:MAC数据帧,media Access Control frame,网络接口所能处理的主要数据包裹,被物理层编码成比特流
偏向软件层面:逻辑链路层(LogicalLink Control)多任务处理来自上层的数据包数据并转换成MAC格式
                   信息交换、流量可控制、数据问题处理
(3)网络层Etwork Layer
        定义IP(InternetProtocol)和路由概念,计算机间的连接建立、终止和维持,数据包的传输路径选择
(4)传输层Transport Layer
        发送端和接收端连接技术,如TCP、UDP… 包括数据包格式、数据包发送、流程的控制、传输过程的帧检测与重新传送
(5)会话层Session Layer
        定义两个四肢间的连接信道的连接与中断,在确定网络服务建立连接的确认
        也可以建立应用程序的会话、提供其他加强型服务
(6)表示层Presentation Layer
        网络服务(或程序)之间的数据格式转换:将来自本地端应用程序的数据格式转换或重新编码成网络的标准格式
        加密解密技术
(7)应用层Appliation Layer
        应用程序并不属于应用程序本身,用来同一管理调度数据对应其发送和接收的应用程序
        定义应用程序如何进入该层的沟通接口,以将数据接收或发送给应用程序,最终展示给用户

  2.TCP/IP协议
        TCP/IP协议在OSI七层协议的观念上进行简化为四层结构,在结构上没OSI七层协议严谨,但时程序撰写上会容易得到广泛使用。
        TCP/IP协议将应用层、表示层、会话层整合为应用层
    应用层:将数据封装一个TCP/IP协议组内某个特定使用到的协议,交由传输层处理
    传输层:放入TCP封装内,并给予TCP封装的首部报文,交由网络层处理
    网络层:封装IP数据包内,给予IP首部,交由网络接口层处理
    网络接口层:MAC封装,比特流传输
wKiom1a8zX3QdPQbAAEXMBsKdWc669.jpg

  3.网络模型对应层级关系
     OSI七层协议只是一个参考模型,过于详细阐述网络出书各方面情况,实际生产中为TCP/IP协议
wKioL1a8zdmS-TLHAAGojgSSSdE748.jpg



二、网络层:IP协议
1.IP协议
    (1)IP协议版本
IPv4:32bits分为四段,点分十进制表示,8bits.8bits.8bits.8bits
每8bits表示用以数字0-255标识
00000000.00000000.00000000.00000000 ===》 0.0.0.0
11111111.11111111.11111111.11111111 ===》 255.255.255.255
IPv6:128bits二进制
    (2)IP(Internetprotocol)地址:网络号+主机号
            在同一物理网段内,主机的IP具有相同的网络号,并具有独特的主机号;同一网段内的主机其主机号不能相同
      注意:
            1) 同一网段内,网络号不变,主机号不能重复
            2)全0表示为整个网段的地址,全1表示为广播地址
    (3)IP地址分类:
         A类:
第一段为网络号,后三段为主机号
网络号:0000 0000 - 0 111 1111:1-127
网络数量:126,127
每个网络中的主机数量:2^24-2
默认子网掩码:255.0.0.0,/8
用于与IP地址按位进行“与”运算,从而取出其网络地址;
1.3.2.1/255.0.0.0= 1.0.0.0
1.3.2.1/255.255.0.0=1.3.0.0        
私网地址:10.0.0.0/255.0.0.0
       B类:
前两段为网络号,后两段为主机号
网络号:1000 0000 - 10 11 1111:128-191
网络数:2^14
每个网络中的主机数量:2^16-2
默认子网掩码:255.255.0.0,/16
私网地址:172.16.0.0-172.31.0.0                                                               
       C类:
前三段为网络号,最后一段为主机号
网络号:1100 0000 - 110 1 1111:192-223
网络数:2^21
每个网络中的主机数量:2^8-2
默认子网掩码:255.255.255.0,  /24
私网地址:192.168.0.0-192.168.255.255
       D类:组播的特俗公用
1110 0000 - 1110 1111:224-239
       E类:保留
240-255
总结:
Class A:0.xx.xx.xx~ 127.xx.xx.xx,私有地址10.0.0.0 ~ 10.255.255.255
Class B:128.xx.xx.xx  ~ 191.xx.xx.xx,私有地址172.16.0.0~ 172.31.255.255
Class C:192.xx.xx.xx  ~ 223.xx.xx.xx,私有地址192.168.0.0~ 192.168.255.255
Class D:224.xx.xx.xx  ~ 239.xx.xx.xx
Class E:240.xx.xx.xx  ~ 255.xx.xx.xx
注意:Loopback IP网段
    lo网络,当初被用来作为测试操作系统内部循环所用的一个网络,同时还能提供系统内部原本就需要使用网络接口的服务所使用。为内部循环网络,无需安装网卡使用,其地址号为127.0.0.0/8,默认的主机IP是127.0.0.1,即为localhost

2.Netmask子网掩码
      将一个大的网段地址划分成更小的网络地址,减少网段内的主机数量,使得更加方便管理,以及广播时效率提高
      方式:通过将一位或多位主机号当做网络号来使用,将网络号全部表示为1,主机号全部用0标识来进行子网划分

3.ip报文首部( 每行占用的位数为32bits)
wKioL1a8zePy11fjAAtneL1Z2c8843.jpg
    (1)IP Version:声明ip数据包的版本,ipv4、ipv6
    (2)IHL:Internet Header Length,ip报文首部长度,以4字节为一个单位来记录IP报头的长度
    (3)TOS:Type Of Service,服务类型,通过定义来标识IP数据包的优先级、延迟、传输量和可靠度等信息
    (4)Total Length:IP数据包的总长度,包括报头和数据部分、用16个字节表示0-65535bytes
    (5)Identtification:标识信息,辨识数据段是否为一个数据
    (6)Flags:特殊标志R、DF、MF,内容可以标识为"0DM"
D:0表示可以分段,1表示不可以分段
M:0表示此IP为最后分段,1表示非最后分段
    (7)Fragment Offset:分段偏移量,用以标识这个IP分段在原始的IP数据包中所占的位置,类似于序号作用
    (8)Time To Live:存在时间,最多255次转发,每次经过一个路由器减一到0丢弃不再转发
    (9)Protocol Number:报文协议代码(TCP--6、UDP--17、ICMP--1、IP--4… ...),数字描述;
    (10)Header Checksum:报头首部校验码,用于检测IP报头是否存在错误
    (11)Source Address:来源IP地址
    (12)Destination Address:目标IP地址
    (13)Options:填充位,提供包括安全处理机制、路由记录、时间戳、严格与宽松的来源路由等
    (14)Data:真实数据



三、传输层:TCP协议
1.TCP报文首部
wKiom1a8zZGhBUozAAxMmf_yB2U421.jpg
    (1)Source Port:源端口号
    (2)Destination Port:目标端口号,通过16位字节标识0-65535共65536个端口
    (3)Sequence Number:数据包序列号,TCP数据分段
    (4)Acknowledgement Number:回应序列号
一次发一批报文时候使用序列号和确认号,TCP三次握手的第一次无确认号
    (5)Header Length:首部长度
    (6)Reserved:保留位(6位);
    (7)Code:control Flag,标志控制码
        该字段有6个bits组成,每个bits标识一种含义,用以说明这个连接的状态,让接收端连接这个数据包的主要动作
URG(Urgent):1标识为紧急数据包,接收端要紧急处理,且Urgent Pointer字段也会被启用
ACK(Acknowledge):1表示为响应数据包,和Acknowledeg Number有关
PSH(Push Function):1表示要求对方立即传送缓冲区内的其他对应数据包,无需等待缓冲区满才传送
RST(Reset):1表示强制结束连接,且发送端已经断线
SYN(Synchronous):1表示发送端希望双方建立同步处理(要求建立连接),主动要连接到对方
FIN(Finish):1表示传输结束
    (8)Window Size:窗口滑动,用来控制数据包的流量,0表示缓冲器已经额满,所以应该暂停数据传输
    (9)TCP Checksum:确认校验码
    (10)Urgent Pointer:紧急数据
    (11)Options:填充位,可变长度,多数情况不使用
    (12)Data:数据

2.TCP协议三次握手机制
      Three-way handshake:TCP在建立连接之前都必须要通过的三个确认动作
     (1)第一阶段:数据包发起
1)随机取用大于1024的端口,监听用于和应用程序通信
2)TCP报头:SYN=1,表示要求建立连接,,主动连接到对方
3)TCP报头:Sequence Number(Client)记录下第一次发送出连接数据包给服务器端的序列号
     (2)第二阶段:数据包接收和确认数据包传送
1)服务器端接收到数据包,并确认所接收的数据包
2)回应数据包:TCP报头中
         SYN=1,ACK=1,表示主动连接且为响应数据包
         Acknowledgement Number(Service)=Sequence Number(Client) + 1,给客户端确认使用
         Sequence Number(Service)新数字,用于确认客户端确实可以收到服务器端的数据包
3)等待客户端响应
     (3)第三阶段:回送确认数据包
1)确认收到报文的Acknowledgement Number(Service)是否为Sequence Number(Client) + 1
2)再次发送数据吧:ACK=1,AcknowledgementNumber(Client)=Sequence Number(Service) + 1
     (4)第四阶段:取得最后确认
                服务器端验证
wKioL1a8ze6Ba-BrAAFjOMgeD64083.jpg



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-178044-1-1.html 上篇帖子: Linux简单处理CC攻击shell脚本 下篇帖子: Linux之间NFS方式共享文件 IP协议 模型
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表