《unix网络编程》(2)网络模型和协议概述
2015-03-16 20:57
267 查看
OSI模型
OSI(open system interconnection)开放系统互联模型是由ISO(国际标准化组织,International Organization for Standardization)定义的网络分层模型,共七层。网络层由IPv4和IPv6两个协议处理。可以选择的传输层协议有TCP和UDP。上图的TCP与UDP之间留有空隙,表明网络应用可以绕过传输层直接使用IPv4或IPv6,这就是原始套接字(raw socket)。
这里所讲的套接字是从顶上三层(网际协议的应用层)进入传输层的接口。这里的焦点是:如何使用套接字编写使用TCP或UDP的网络应用程序。原始套接字甚至可以绕过IP层直接读写数据链路层的帧。
为什么套接字是从OSI模型顶上三层(网际协议的应用层)进入传输层的接口?
答案:这样设计两个理由:第一是顶上三层处理具体网络应用(FTP、Telent或HTTP)的所有细节,却对通信细节了解很少;底下四层对具体网络应用了解不多,却处理所有的通信细节:发送数据、等待确认、给无序到达的数据排序、计算并验证校验和等。第二,顶三层通常构成所谓用户进程,底下四层通常作为操作系统内核的一部分提供。Unix与其他现代操作系统都提供分隔用户进程与内核的机制,因此可见,第4和5层之间的接口是构建API的自然位置。
UDP
UDP的首部:UDP伪首部:
12字节的伪首部是为了计算检验和而设置的。伪首部包含IP首部的部分字段,其目的是让UDP两次检查数据是否已经正确到达目的地。
TCP报文段
网络数据包封装格式:IP数据报
IPv4数据报格式:各个字段含义:
以太网帧格式
//以太网首部代码 struct ethernet_hdr { char dest_mac[6]; char src_mac[6]; short protocol; };
以太网帧中的数据长度规定最小46 字节,最大1500 字节,ARP 和RARP 数据包的长度不够46 字节,要在后面补填充位。最大值1500 称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU,如果一个数据包从以太网路由到拨号链路上,数据包度大于拨号链路的MTU了,则需要对数据包进行分片fragmentation)。
相关文章推荐
- 黑马程序员_温习 网络编辑一 (个人笔记)摘要(网络概述---网络参考模型---网络传输要素---IP地址---端口----传输协议(UDP -- TCP)---Socket机制 )
- 几种网络通讯协议(WIFI,WAPI,GSM,GPRS,CDMA)概述
- 第四章 网络层之IP支持协议--OSPF起源、概述、工作原理
- UNIX网络编程——基于UDP协议的网络程序
- 网络传输协议概述——第四讲:TCP/IP协议之链路层详解
- 网络传输协议概述——第二讲:TCP/IP协议概述
- ISMG接口协议网络结构和功能概述
- 01-计算机网络概述之协议分层(七层、四层)01-lh
- UNIX网络编程——基于UDP协议的网络程序
- 网络排错模型之我见----模型,基线,协议,数据包
- OSI模型——TCP/IP网络7层协议的理解
- 网络传输协议概述——第一讲:传输协议概述
- OSI模型的基本层次概念及对应网络协议
- UNIX网络编程——基于UDP协议的网络程序
- 网络传输协议概述——第四讲:TCP/IP协议之网络层IP(网际协议)详解
- 第四章 网络层之IP支持协议--OSPF(3)起源、概述、工作原理
- 网络传输协议概述——第二讲:TCP/IP协议概述
- 网络传输协议概述——第三讲:TCP/IP协议分层
- OSI七层网络模型,TCP/IP四层网络模型与网络协议解析
- 网络编程一:概述、网络模型、TCP\UDP、Socket套接字、UDP发送和接收、UDP聊、阻塞式方法