网络编程概念全面接触(二)

 网络编程概念全面接触(二)

草木瓜

    网络编程通常被称为Socket编程,在《网络编程概念全面接触一》一文中已经做了比较
详细的解释。这里就涉及的相关传输技术做实际的分析。

一、Socket的两种类型

    套接字的两种类型:一种采用"Stream Sockets"(流格式),另一种为"Datagram Sockets"
(数据报格式)。
    数据报格式又称为无连接套接字,相反流格式肯定是有连接了。这是跟两种类型采用的
传输协议有关。"Stream Sockets"(流格式)基于TCP协议,"Datagram Sockets"(数据报格式)
基于UDP协议。
    对比上UDP与TCP协议的区别,就可以明确Socket的两种类型的含义了。
   

二、TCP与UDP

    TCP 传输控制协议   Transfer Control Protocal
    UDP 用户数据报协议 User Datagram Protocol

    TCP与UDP的区别:
   
    TCP                        UDP
   
    基于连接                   基于无连接
    系统资源的要求多           系统资源的要求少
    数据包结构复杂             数据包结构简单
    保证数据正确性             可能丢包
    保证数据顺序               不保证
    通信效率相对低             通信效率较高
   
   
    可见TCP保证数据能可靠并且按顺序到达,是完全可靠的连接传输,然而资源要求也比较
多,结构也比较复杂。TCP首先需要在传输方的两端建立一可靠的连接(通过信号的三次握手,
详细可参考TCP相关资料),然后通过数据包的各项校验确保数据完全正确。UDP设计初衷就是
尽可能快的将数据包发送出去。所以UDP协议显得非常精简。你只要建立一个包,构造一个有
目标信息的IP头,然后发出去。无需连接。当然UDP也需要通过对方返回“命令正确应答”也叫
“ACK”包,来避免数据包丢失。假使一定时间内,发送方没有收到接收方的应答,则重新发送
数据包,直到收到"ACK"确认包。

    比如聊天室用TCP协议来传送文字、控制信息、画板和屏幕广播数据,用UDP协议来传送语
音和视频流。

三、数据包在网络上的传输


    著名的网络七层模型OSI/RM相信很多人都知道。
   
    应用层 (Application)
  表示层 (Presentation)
    会话层 (Session)
  传输层(Transport)
  网络层(Network)
  数据链路层(Data Link)
  物理层(Physical)

    TCP/IP四层模型
   
    应用层(Application Layer) (TFTP,FTP,TELNET)
  传输层(Host-to-Host Transport Layer) (TCP, UDP)
  网络层(Internet Layer) (IP和路由)
  网络接口层(Network Access Layer) (网络层,数据链路层和物理层)

    模型的核心思想就是层层封装,工作独立化,即做应用层不必关于下面是如何工作的。
发送数据包从顶层一步步封装,依次加入传输层的报头(TCP,UDP),再加入IP报头,只到物
理层,接收方再依次从物理层开始相反方向解开数据包,直到分析出应用层数据。

    例:TFTP的一个包,先是被第一个协议(在这里是TFTP)在它的报头(也许是报尾)包装
(“封装”),然后,整个数据(包括TFTP头)被另外一个协议(在这里是UDP)封装,然后下一个
(IP),一直重复下去,直到硬件(物理)层(这里是以太网)。
    当另外一台机器接收到包,硬件先剥去以太网头,内核剥去IP和UDP 头,TFTP程序再
剥去TFTP头,最后得到数据。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值