标签:计算机 算法 应该 网络通信 ram soc 共享 设备驱动 div
网络编程主要是两个协议 TCP/IP 和UDP
实现通信的最简单的方法是共享内存,同一个内存被两个进程共享,完成数据的传输
由进程间的通信逐渐的发展到后来的UDP 通信的前面,后来发展有了IPV4也就是现在的网络通信模式
网络通信的层次
osi 参考模型
应用层、表示层 、会话层、传输层、网络层、数据链路层、物理层
TCP参考模型
应用层、传输层、网络层、网络接口层
什么是协议簇
由一组专业的协议组成,包含很多的子协议,比如TCP的子协议 IP \TCP\UDP\ARP\ICMP
TCP/IP 模型的介绍
网络接口层
最底层,负责接收IP数据并把数据报通过选定的网络发送出去,他使用自己的数据链路协议
可能包含复杂的子系统或者设备驱动程序
网络层
负责主机之间的通信,接收传输层的请求,将目的地址信息分组封装在IP 数据报中,填在数据报的首部
用选路算法确定直接交付还是给路由器并传输给网络接口进行传输
传输层
完成程序之间的通信,也叫端到端的通信,让接收方回送确认信息,让发送方重发丢失的分组
应用层
用户调用程序通过TCP/IP访问互联网提供的服务,与各个传输层的协议交互的应用程序负责接收和发送数据,用用程序将数据按照传输层的格式要求组织好,向下层传输
物理层
该层负责 比特流在节点之间的传输,即负责物理传输,这一层的协议既与链路有关,也与传输的介质有关。通俗来说就是把计算机连接起来的物理手段。
TCP/IP的核心协议
TCP与UDP 的比较
面向报文的传输方式是应用层交给UDP多长的报文,UDP发送多长的报文,即一次发送一个报文。因此,应用程序必须选择合适大小的报文。
面向字节流
虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序看成是一连串的无结构的字节流。TCP有一个缓冲,当应该程序传送的数据块太长,TCP就可以把它划分短一些再传送。
三次握手
第一次:
客户端 - - > 服务器 此时服务器知道了客户端要建立连接了
第二次:
客户端 < - - 服务器 此时客户端知道服务器收到连接请求了
第三次:
客户端 - - > 服务器 此时服务器知道客户端收到了自己的回应
服务器:
1、socket() 创建套接字
2、bind() 绑定socket和端口号
3、listen()监听端口号
4、accept()接收来自客户端的连接请求
5、recv()从socket中读取字符
6、close()关闭socket
客户端
1、socket() 创建套接字
2、connect()连接指定计算机的端口
3、send()向socket中写入信息
4、close()关闭socket
数据包头
源地址、目的地址;16位长,标识出远端和本地的端口号
数据报的长度是指包括报头和数据部分在内的总的字节数,报头的长度是固定的,所以该域用来计算可变的数据部分(数据负载)
套接字定义
socket 是一种特殊的io接口,是一种文件描述符,socket是一种常用的进程之间通信的机制
不仅可以实现本地的进程通信,也可以通过网络在不同的机器之间进行通信
套接字的类型
流式套接字(SOCK_STREAM)提供可靠的、面向连接的通信流,传输层使用TCP协议,从而保证了
数据传输的可靠性和顺序性
数据报套接字(SOCK_DGRAM)定义一种无连接的服务,数据通过相互独立的报文进行传输
传输层使用数据报协议UDP
原始套接字(SOCK_RAW)允许对底层协议如IP/ICMP直接访问,用以协议的开发
地址结构
举例 sockaddr
struct sockaddr{
unsigned short sa_family ;//地址簇
char sa _data[14];//14字节的协议地址,包含socket 的ip地址和端口号
} ;
结构字段
字节序
本机中的字节序,有大端模式和小端模式,如果本机的主机字节序和网络字节序相同
则不需要转换,如果不相同,则使用函数转换
网络编程基础(01)
标签:计算机 算法 应该 网络通信 ram soc 共享 设备驱动 div
原文地址:https://www.cnblogs.com/laochaia/p/13197951.html