`
百合不是茶
  • 浏览: 351808 次
社区版块
存档分类
最新评论

OSI七层协议与TCP/IP协议基础(收集的资源)

阅读更多
OSI七层网络结构图与TCP/IP五层网络结构图
 

 

(1) OSI七层模型
OSI中的层 功能 TCP/IP协议族 
应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 
表示层 数据格式化,代码转换,数据加密 没有协议 
会话层 解除或建立与别的接点的联系 没有协议 
传输层 提供端对端的接口 TCP,UDP 
网络层 为数据包选择路由 IP,ICMP,RIP,OSPF,BGP,IGMP 
数据链路层 传输有地址的帧以及错误检测功能 SLIP,CSLIP,PPP,ARP,RARP,MTU 
物理层 以二进制数据形式在物理媒体上传输数据 ISO2110,IEEE802,IEEE802.2
 
 

 

(2)TCP/IP 五层模型的协议 
应用层 
传输层 
网络层 
数据链路层 
物理层

 


物理层:中继器、集线器、还有我们通常说的双绞线也工作在物理层 
数据链路层:网桥(现已很少使用)、以太网交换机(二层交换机)、网卡(其实网卡是一半工作在物理层、一半工作在数据链路层) 
网络层:路由器、三层交换机 
传输层:四层交换机、也有工作在四层的路由器

 

TCP连接时的三次握手和连接终止时的四次挥手

 

相对于SOCKET开发者,TCP创建过程和链接折除过程是由TCP/IP协议栈自动创建的.因此开发者并不需要控制这个过程.但是对于理解TCP底层运作机制,相当有帮助.
 
   而且对于有网络协议工程师之类笔试,几乎是必考的内容.企业对这个问题热情之高,出乎我的意料:-)。有时上午面试前强调这个问题,并重复讲一次,下午几乎每一个人都被问到这个问题。
 
因此在这里详细解释一下这两个过程。
 
TCP三次握手
 
所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。
 
三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小信息.在socket编程中,客户端执行connect()时。将触发三次握手。


 

 

 

 

•第一次握手:
客户端发送一个TCP的SYN标志位置1的包指明客户打算连接的服务器的端口,以及初始序号X,保存在包头的序列号(Sequence Number)字段里。


 

 

 

 

•第二次握手:
服务器发回确认包(ACK)应答。即SYN标志位和ACK标志位均为1同时,将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即X+1。

 

 

•第三次握手.
客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1

 

 

 

SYN攻击

 

   在三次握手过程中,服务器发送SYN-ACK之后,收到客户端的ACK之前的TCP连接称为半连接(half-open connect).此时服务器处于Syn_RECV状态.当收到ACK后,服务器转入ESTABLISHED状态.

 

  Syn攻击就是 攻击客户端 在短时间内伪造大量不存在的IP地址,向服务器不断地发送syn包,服务器回复确认包,并等待客户的确认,由于源地址是不存在的,服务器需要不断的重发直 至超时,这些伪造的SYN包将长时间占用未连接队列,正常的SYN请求被丢弃,目标系统运行缓慢,严重者引起网络堵塞甚至系统瘫痪。

 

 Syn攻击是一个典型的DDOS攻击。检测SYN攻击非常的方便,当你在服务器上看到大量的半连接状态时,特别是源IP地址是随机的,基本上可以断定这是一次SYN攻击.在Linux下可以如下命令检测是否被Syn攻击

 

netstat -n -p TCP | grep SYN_RECV

 

一般较新的TCP/IP协议栈都对这一过程进行修正来防范Syn攻击,修改tcp协议实现。主要方法有SynAttackProtect保护机制、SYN cookies技术、增加最大半连接和缩短超时时间等.

 

但是不能完全防范syn攻击。

 

 

 

TCP 四次挥手

 

TCP的连接的拆除需要发送四个包,因此称为四次挥手(four-way handshake)。客户端或服务器均可主动发起挥手动作,在socket编程中,任何一方执行close()操作即可产生挥手操作。

 

 

参见wireshark抓包,实测的抓包结果并没有严格按挥手时序。我估计是时间间隔太短造成。

 

 

 

 

UDP和TCP的区别是什么?
TCP的全称为传输控制协议。这种协议可以提供面向连接的可靠的字节流服务。第二种协议为UDP全称为用户报文协议,它可以提供面向非连接的不可靠的点到多点的通信。这是两种协议的区别。

 


TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。

 

TCP的缓冲、流控与窗口
    1.TCP使用窗口机制进行流量控制 。
    2. 什么是窗口?
    连接建立时,各端分配一块缓冲区(用来存储接收的数据,并将缓冲区的尺寸发送给另一端接收方发送的确认信息中包含了自己剩余的 缓冲区尺寸剩余 缓冲区空间的数量)叫做窗口 。

 

UDP---用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并 不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。
用TCP还是UDP,那要看你的程序注重哪一个方面?可靠还是快速?(建立连接三次握手,超时重传,检验数据,流量控制等原因)

 

 

 

 广播的实现
应用程序只能通过UDP方式发送广播。
一般情况下,如果调用sendto,只能向非广播地址发送数据报。如果要发送广播数据报,必须告诉内核,可以通过设置SO_BROADCAST套接口选项来做到这一点。
int on=1;
setsockopt(sockfd,SOL_SOCKET,SO_BROADCAST,&on,sizeof(int));

 

广播UDP与单播UDP的区别就是IP地址不同,广播使用广播地址255.255.255.255,将消息发送到在同一广播网络上的每个主机。值得强调的是:本地广播信息是不会被路由器转发。当然这是十分容易理解的,因为如果路由器转发了广播信息,那么势必会引起网络瘫痪。这也是为什么IP协议的设计者故意没有定义互联网范围的广播机制。

 

广播地址通常用于在网络游戏中处于同一本地网络的玩家之间交流状态信息等。广播就不在写演示程序了,读者可以将ECHO程序的ip地址改为广播地址即可。

 

其实广播顾名思义,就是想局域网内所有的人说话,但是广播还是要指明接收者的端口号的,因为不可能接受者的所有端口都来收听广播。

 

 

 Broadcast Address(广播地址)是专门用于同时向网络中所有工作站进行发送的一个地址。在使用TCP/IP 协议的网络中, 主机标识段host ID 为全1 的IP 地址为广播地址,广播的分组传送给host ID段所涉及的所有计算机。例如,对于 10.1.1.0 (255.255.255.0 )网段,其广播地址为10.1.1.255 (255 即为2 进制的11111111 ),当发出一 个目的地址为10.1.1.255 的分组(封包)时,它将被分发给该网段上的所有计算机。

广播地址主要有两类

  广播地址应用于网络内的所有主机
  1)受限广播
  它不被路由但会被送到相同物理网络段上的所有主机
  IP地址的网络字段和主机字段全为1就是地址255.255.255.255
  2)直接广播
  网络广播会被路由,并会发送到专门网络上的每台主机
  IP地址的网络字段定义这个网络,主机字段通常全为1,如 192.168.10.255

四种I P广播地址

  受限的广播地址
  受限的广播地址是255.255.255.255。该地址用于主机配置过程中IP数据报的目的地址,此时,主机可能还不知道它所在网络的网络掩码,甚 至连它的IP地址也不知道。在任何情况下,路由器都不转发目的地址为受限的广播地址的数据报,这样的数据报仅出现在本地网络中。
  指向网络的广播
  指向网络的广播地址是主机号为全1的地址。A类网络广播地址为netid.255.255.255,其中netid为A类网络的网络号。一个路由器必须转发指向网络的广播,但它也必须有一个不进行转发的选择。
  指向子网的广播
  指向子网的广播地址为主机号为全1且有特定子网号的地址。作为子网直接广播地址的IP地址需要了解子网的掩码。例如,如果路由器收到发往 128.1.2.255的数据报,当B类网络128.1的子网掩码为255.255.255.0时,该地址就是指向子网的广播地址;但如果该子网的掩码为 255.255.254.0,该地址就不是指向子网的广播地址。
  指向所有子网的广播  
指向所有子网的广播也需要了解目的网络的子网掩码,以便与指向网络的广播地址区分开。指向所有子网的广播地址的子网号及主机号为全1。例如,如果目的子网 掩码为255.255.255.0,那么IP地址128.1.255.255是一个指向所有子网的广播地址。然而,如果网络没有划分子网,这就是一个指向 网络的广播。

广播和广播地址

  1. TCP/IP协议栈中, 传输层只有UDP可以广播.
  2. 只能对同一子网内部广播, 广播数据包不经过路由器.
  3. UDP的广播地址为255.255.255.255
  4. 在winsock实现中, 有一个选项对应是否允许广播.
  必须调用setsockopt打开该选项.
  5. 打开后, 用sendto向255.255.255.255发送的数据包全部广播.
  很多局域网都定义了一个特殊的保留地址, 称为广播地址. 当信息头中目的地址域的内容为广播地址时, 该帧被局域网上所有计算机接收. 这个过程称为广播.
  合法的广播地址就是主机的网络地址加上最大的主机号。网络地址通过机器的ip地址与子网掩码按位与得出,我们以ip地址为10.78.202.175 ,子网掩码为255.255.255.0。
  为例来分析一下上面的几个概念
  首先将这两个东西换算成二进制代码
  ip地址:00001010.01001110.11001010.10101111
  子网掩码:11111111.11111111.11111111.00000000
  按位与之后得出网络地址:00001010.01001110.11001010.00000000
  十进制表示就是10.78.202.0
  这个网络地址理论上可以有254台主机

0
1
分享到:
评论

相关推荐

    OSI七层协议模型和TCPIP四层模型

    ### OSI七层协议模型与TCP/IP四层模型详解 #### 一、为何采用分层设计? 在探讨OSI七层模型与TCP/IP四层模型之前,我们首先要理解为什么网络协议会选择分层设计的方式。分层设计的核心优势在于它能够极大地简化...

    TCP/IP协议栈及其各个层次的内容

    高层是TCP/IP协议栈的第五层和第六层,也是OSI参考模型的第五层到第七层。高层的主要功能是提供应用程序之间的通信服务。高层协议的主要作用是提供各种应用程序之间的交互服务。 TCP/IP体系结构 TCP/IP体系结构是...

    TCP/IP协议栈TCP/IP协议栈

    TCP/IP协议栈是互联网通信的基础,它定义了网络设备如何互相通信的一套标准。这个协议栈分为四个主要层次,每个层次都有其特定的功能,确保数据能够准确无误地在网络中传输。 首先,我们来了解OSI七层参考模型。这...

    TCP/IP协议详细介绍

    计算机网络体系结构通常参照OSI模型分为七层,但TCP/IP协议族采用了四层结构,即应用层、传输层、网络层和数据链路层。OSI模型注重理论上的通信协议功能,而TCP/IP更侧重于实际的程序实现。TCP/IP协议不仅包含TCP和...

    对以太网全硬件TCP/IP协议栈的简单认识-w5500以太网协议基本认识.pdf

    #### 一、OSI七层结构模型概述 在深入探讨以太网全硬件TCP/IP协议栈之前,我们首先需要了解网络通信的基础——OSI(Open System Interconnect)七层模型。这一模型由国际标准化组织ISO提出,用于描述不同计算机系统...

    osi与TCP/ip模型精华快速记忆总结

    ### OSI与TCP/IP模型精华快速记忆总结 #### 第一部分:OSI七层模型...通过以上总结,我们可以清晰地了解OSI七层模型与TCP/IP四层模型在结构、功能以及协议方面的差异与联系,为学习和理解网络协议栈提供了坚实的基础。

    TCP/IP教程TCP/IP基础

    3.2.3 IP协议 23 3.2.4 应用层 25 3.2.5 传输层 25 3.2.6 网络层 25 3.2.7 链路层 25 3.3 远程登录(Telnet) 25 3.4 文件传输协议(FTP) 25 3.5 普通文件传输协议(TFTP) 26 3.6 简单邮件传输协议(SMTP) 26 3.7 网络...

    TCP/IP超全资料

    TCP/IP模型分为四层(在OSI七层模型的基础上简化而来):应用层、传输层、网络层和数据链路层。每一层都有其特定的功能和协议。 1. **应用层**:这是TCP/IP模型的最高层,包括HTTP(超文本传输协议)、FTP(文件...

    tcp/ip协议简介

    TCP/IP协议栈通常分为五层模型(在OSI七层模型的基础上简化),从下到上依次是:物理层、数据链路层、网络层、传输层和应用层。每一层都有其特定的协议和功能: 1. 物理层和数据链路层:物理层处理实际的信号传输,...

    基于ARM核的嵌入式TCP/IP协议栈简化实现

    嵌入式TCP/IP协议栈的设计需要遵循OSI七层模型的思想,但在实际设计过程中,考虑到嵌入式设备的资源限制和对网络功能的需求程度,并非所有协议都需要完整实现。简化后的嵌入式TCP/IP协议栈主要包括以下几个关键模块...

    TCP-IP详解(卷一、二、三)超清pdf电子版

    卷一《协议》主要涵盖了网络的基础知识,包括网络的分层模型、OSI七层模型与TCP/IP四层模型的对比、IP协议、ICMP协议、ARP/RARP协议、子网划分与CIDR、网络地址转换NAT以及TCP和UDP协议。书中详细解释了网络数据传输...

    Internetworking with TCP/IP

    OSI 模型由七层组成,即物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。TCP/IP 模型则由四层组成,即网络接口层、互联网层、传输层和应用层。 协议栈 协议栈是计算机网络中的一种软件结构,它是指...

    计算机网络体系结构与tcp/ip协议

    它不完全遵循OSI七层模型,而是简化为四层,分别是:网络接口层、网络层、传输层和应用层。 1. 网络接口层:对应OSI模型的物理层和数据链路层,负责数据在物理媒介上的传输,包括以太网、无线局域网等各种网络接口...

    追踪linux TCP/IP 代码运行_光盘文件1

    1. **TCP/IP协议栈结构**:TCP/IP协议栈通常分为四层(在OSI模型中为七层),包括链路层、网络层、传输层和应用层。在Linux中,这些层对应的模块分别是:链路层的网卡驱动、网络层的IP协议处理、传输层的TCP和UDP...

    TCP/IP详解,卷1:协议源码.rar 经典 权威

    9. **网络层次模型**:介绍OSI七层模型或TCP/IP四层模型,帮助读者理解不同层次的任务和接口。 10. **网络故障排查**:书中可能包含了一些诊断和解决网络问题的方法,帮助读者提升网络问题的排查能力。 尽管描述中...

    01网络基础模型-OSI与TCP/IP.docx

    网络基础模型 OSI 与 TCP/IP OSI 参考模型(Open System Interconnection Reference Model,OSI/RM)是由国际标准化组织 ISO 提出的一个网络系统互连模型。它定义了网络互连的七层框架(物理层、数据链路层、网络...

    TCP/IP详解(协议和实现)

    1. **TCP/IP模型**:不同于传统的OSI七层模型,TCP/IP模型通常被划分为四层,分别是应用层、传输层、网络层和链路层。每一层都有特定的任务和协议,如应用层的HTTP、FTP,传输层的TCP和UDP,网络层的IP,以及链路层...

    TCP/IP协议详解卷一:协议

    接着,书中详细阐述了网络分层模型,特别是OSI七层模型与TCP/IP四层模型(或五层模型)的区别和联系,使读者能够构建起清晰的网络通信框架。 在TCP/IP协议族中,网络接口层(或物理层和数据链路层)是实现数据在...

Global site tag (gtag.js) - Google Analytics