套接字与网络通信

本文介绍了网络通信中的套接字(Socket)机制,包括TCP/IP协议簇的四层结构,各层的主要协议及功能,如TCP、UDP协议在传输层的作用,以及IP地址、子网掩码的概念。此外,还讲解了套接字的创建、类型和地址结构,以及域名与IP地址的转换,强调了字节顺序在网络通信中的重要性。
摘要由CSDN通过智能技术生成

进程之间有很多的通信方法。 例如管道(包括有名管道和无名管道), 用于异步通信的信号机制,  System V进程间通信(包扩信号量, 消息队列, 共享内存)。 这些通信机制只是适用于单个机器内部的进程之间进行通信。 

这里我们说的是跨主机的进程之间的通信机制, 即基于BSD的socket(套接字)通信(即常说的网路通信), 它不仅支持本地无关联的两个进程之间的通信, 还支持跨网络的, 不同主机之间的进程之间的通信。 利用套接字, 我们很容易的实现分布与网络的C/S等模型。

讨论的网络中两主机之间通信拓扑如下:


一 TCP/IP 模型

TCP/IP 是计算机网络通信的一组协议, 又被称为TCP/IP 协议簇, 主要包括TCP, IP, UDP, ICMP 等协议。 TCP/IP 有如下四层结构:自上而下分别为应用层, 传输层, 网络层, 网络接口层。

(1)网络接口层

主要用于数据帧的发送和接受工作。 所谓的帧(frame)就是网络信息传输单元。 也就是说该层负责将帧放到网络中, 或者从网络中把帧接收下来。 这一层主要是一些设备驱动程序和网卡等硬件组成。

(2)网络层

这一层主要是实现了一组网络互连协议。传输的数据是IP报文, 每个IP报文都有目的地址和源地址。 用于把一个包(package)从发送方主机经过网络, 传到另一个具有IP地址的主机上。也就是说, 负责报文的路由选择。 最核心的协议就是IP(internet protocol)协议了。  这一层实现了两个IP协议版本, 一个是IPv4(32 bit), 一个是IPv6(128 bit)。 除此之外, 还有用于差错诊断的ICMP(internet control message protocol)协议, 以及用于相邻的多播路由(multicast routers)用于建立多播组的IGMP(internet group management protocol)协议。

(3)传输层

传输层主要为应用层提供end-to-end(or host-to-host)的服务。  主要有两个传输控制协议:

一  TCP(transmission control protocol)协议, 这个协议时connection oriented transmissions(面向连接的), 也就是先连接上, 然后在进行数据传输。  实现的是可靠传输。适合一次传输大批数据, 并适用于得到响应的应用程序 。

二 UDP(user datagram protocol)协议, 提供的是无连接的通信, 且不对传送包进行可靠性确认, 适合于一次小批数据的传输, 可靠性有应用层完成。 


(4)应用层

应用程序通过这一层访问网络。 主要包括如下协议:

一 Telnet:  用于远程登录服务

二  FTP 用于文件传输

三 SMTP(simple mail transfer protocol) 用于电子邮件协议

四 DNS(domain name system)  用于域名解析服务, 即将域名映射为IP地址的协议

五 FTTP 用于超文本传输协议。 作用就相当于C/S的请求-响应协议。 例如一个浏览器, 就是一个client, 提交一个HTTP的请求message到一个server, server将返回HTML文件以及其他的内容给client。

数据包的封包拆包过程:


IP 地址

IP地址是在逻辑上唯一的标识一台主机, 为32位的。 MAC地址是在物理上唯一的标识一台主机的, 为48bit的. 端口号是主机内唯一标示运行进程的。

一个IP地址由网络号和主机号两部分组成。  

网络ID: 标识一个网络。 同一个网络上的主机使用同一个网络号。 拥有相同的网络号的主机之间通信不需要经过路由设备。 这或许解释了同一个实验室的两台主机之间传送文件速度很快吧。

主机ID: 对于一个网络号来说,  其内部的每一台主机的主机号是唯一的。 每一个主机由一个逻辑IP地址确定网络号和主机号。 

为适应不同大小的网络, 定义了如下五类IP地址(有二进制表示法和点分十进制表示法(最常见)): A, B, C, D, E类地址。

A类地址一般分配给政府机构。 拥有最大数量的主机。 最高位为0, 紧跟的7位为网络号, 最后24位表示主机号。 总共有126个网络。 为什么不是127, 因为最后一个网段127(即0 1111111)适用于本地回环测试的。  广播地址为X.255.255.255 , 点分十进制第一个字节的范围为1-126

B类地址, 最高两位置为10, 前16位为网络号。 广播地址是X.X.255.255 ,点分十进制第一个字节的范围为128-191

C类地址, 最高三位置为110, 前24位总为网络号, 后八位为主机号。 广播地址为X.X.X.255 。

注意广播地址不能被当做主机号。点分十进制第一个字节的范围为192-223.

D类地址, 最高位总被置为1110, 用于组播通信。 没有网络号和主机号之分。点分十进制第一个字节的范围为224-239.

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值