tcp/ip模型

Internet使用的主要通信模型是TCP/IP模型,该模型采用分层的方法,每一层由若干个协议实现该层的功能,同时下层为上层提供服务,其体系结构如下图所示:
这里写图片描述

谈谈分层的思想:
不知道是哪位大家说的这样一句话,在计算机科学中,当遇到一个难题,通过添加一层的方法都可以解决。
分层的优点:
1.通过对问题领域进行分层,下层通过接口为上层提供服务的方式,这样遵循高内聚低耦合的原则,软件设计更加灵活,健壮,同时设计很清晰,便于扩展。
2.每一层只专注实现自己的功能,这样便于排错。
分层思想的实践:
在最近的一个C#项目中,一个解决方案中有c#的工程,同时某些对性能要求较高的功能用c++写的,那么c#怎么调用c++的代码,并且要求能进行代码级的调试。.Net平台提供ref 关键字,为c++中的类建立一个托管的类(ref class is a CLR class. It’s the equivalent of class in C#.)

public ref class EcuDiagnoseSignle 
{
private:
    static  AutoResetEvent^ DiagnoseEvent= gcnew AutoResetEvent(false); 
private: 
    static String^ strPreEcuName=""; 

public:
    static EcuDiagnoseSignle^ GetInstance()
    {
        if (nullptr != m_pDiagnoseSignle)
        {
            return m_pDiagnoseSignle;
        }
        else
        {
            return nullptr;
        }
    }
    static void CreateInstance(String^ strEcuName,List<Byte>^ CommParam,Byte ProAndChl,int RepeateRunTimes,String^ strPhyReqId)
    {       
        if (strPreEcuName == "")
        {
            m_pDiagnoseSignle= gcnew EcuDiagnoseSignle(CommParam,ProAndChl,RepeateRunTimes,strPhyReqId);    
            m_pDiagnoseSignle->Init();
            strPreEcuName = strEcuName;
        }
        else if ( 0 != strEcuName->CompareTo(strPreEcuName))//如果是新的ecu,则删除前一个ecu信息
        {
            if (nullptr != m_pDiagnoseSignle)
            {
                m_pDiagnoseSignle->PreDispose();
            }`
     ....
}

通过编写这样一个托管类,就实现了c#代码到c++代码的无缝连接。
这里说了写题外话,下面谈谈TCP/IP模型:
各层实现的功能:
数据链路层:
由网络驱动程序实现的,主要封装了链路的电器特性,数据链路层根据局域网协议的不同传输不同的数据帧,如果使用的是以太网协议,则传输以太网帧,这一层的协议还包括ARP,RARP协议。
网络层:
实现主机之间的通信,这一层实现的是无状态,不可靠传输,主要是IP协议,ICMP协议。
传输层:
在主机之间建立一个逻辑通信通道,有TCP,UDP,STCP协议。
应用层:
实现特定应用,常用的有HTTP,FTP,SMTP等等。
下面是几个名词解释
无状态:是指通信双方不同步传输数据的状态信息,这在无可靠传输中很常见。
无连接:通信双方不长久维持对方的任何信息。
不可靠:不能保证数据报文准确的发送给对方。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值