网络基础(1)
网络编程:
1.网络基础:
协议:
ftp:文件传输协议
Linux下栈的默认大小8M
vs下默认栈大小1M
协议
数据包:包一般不会太大
我们一般说的都是tcp/ip协议
数据链路层[网络接口层]–以太网帧协议,只是数据传输层协议用的较多的协议的一种
网络层–ip
传输层–tcp/udp
应用层–ftp,http,ssh,telent
程序员只需要搞应用层,前三层是操作系统进行处理的
除了应用层自己包装之外,其他都是由操作系统解决,信息发送到目的主机之后,外三层也是由操作系统打开,应用层再由自己打开,就可以获取数据
应用层的协议是可以自己定义的。
以太网帧协议:
mac地址:网卡编号(全世界绝对不会重复)
arp协议:通过IP获取对端mac地址
arp数据报
假如北京这台主机要给广州这台主机发送信息,在不知道对方mac地址的话就需要先通过arp协议获取对方的mac地址,首先北京这边先填写这个表
这样就获取了对方的mac地址
IP协议!=IP协议
8位生存空间:8^2次 = 256,未防止产生垃圾数据,TTL每经过一个路由节点数据减一,为0的时候,将不再转发数据,数据将会被丢弃
DNS服务器:域名解析服务器(www.baidu.com),通过服务器拿到IP地址,
dns根服务器(全球十三台,10台在美国,1台在英国,1台在瑞典,1台在日本,只要老美不给解析服务器,中国网络就会瘫痪)
端口:网络环境中,ip定位主机,端口(port)定位主机上的一个进程(应用程序)
16位端口:2^16 = 65536,最大端口号不超过65535
定义端口注意不要写成系统的端口
因为网络层有了IP,传输层就不需要IP了
前三个部分称为协议头,无论是ip/udp数据之前的都是协议头
udp/tcp讲解:传输层协议
tcp:面向连接的安全的流式传输协议
⦁ 连接的时候,进行三次握手
⦁ 数据发送的时候会进行数据的确认(并不是不会丢包,只是包丢了它会重传)
因为发送类似于管道,所以就算,发射接收频率不一样也不会丢失
udp:面向无连接的不安全的报式传输
⦁ 连接的时候不会握手
⦁ 数据发送出去之后就不管了
udp:一个包如果不丢就不丢,如果丢了就会全丢,不存在丢失一部分
要想让udp安全就需要在应用层再做封装,udp(传输层)不做校验,但是可以让应用层封装校验
腾讯聊天就是用的是udp,因为tcp在传输前还需要三次握手,还要校验,传输速率较慢
socket编程:
socket套接字,套接字就是一套网络通信的函数的接口的通称
封装了传输层协议:
⦁ tcp
⦁ udp
套接字(socket:插座)的概念:
socket通信需要两端:
----服务器端(被动,时刻处于预备状态,只要客户端连接)
----客户端(主动)
socket编程:网络io编程
—读写操作read/write操作的是文件描述符
创建一个套接字,得到的是文件描述符
管道:(针对匿名管道)就是在内核缓冲区(内存中的一块存储空间),读写两端各有一个文件描述符
套接字:
创建成功,得到一个文件描述符fd,fd操作的是一块内核缓冲区
网络基础(2)
网络编程:网络基础1,套接字编程,网络基础2,网络基础3,高级io(多路复用,多路转接(高并发网络编程))
socket(伯克利套接字)
计算机网络发展
信息发送:
数据----->交换机---->另一台交换机----->交换机连接的其中一台电脑
但是每一台交换机连接的计算机和交换机都是很多的,那交换机如何区分这些数据要发送到拿一台电脑呢,这个时候就出现了路由器,替代了交换机,路由器可以选择网络(路径选择),这要就可以实现更大的网络,这就是路由器组成了局域网。
局域网,城域网,广域网:网络覆盖范围不同
因特网(国际化广域网),互联网
我们平时所上的网络就是大一点的局域网
IP地址:外网络中唯一的标识一台主机
端口:在一台主机上唯一标识一台进程
网络上传输的是光电信号(高低电平)
协议:通信双方的数据格式约定
网络互联的基础,相同的网络通信协议的制定
协议分层:作用解耦合,按照服务,接口,协议对通信进行分层,分层之后网络通信环境更加清晰,更加方便,形成标准之后,才能形成互联
osi七层参考模型:(也叫开放互联模型)------按照服务,接口,协议,对整个复杂的网络通信环境进行层次划分,形成标准实现网络互联
从上到下是:应用层-表示层-会话层-传输层-网络层-链路层-物理层
tcp/ip五层参考模型:
应用层:负责应用程序之间的数据沟通;HTTP,FIP
传输层:端(端点/端口)与端之间的数据传输;TCP/UDP
网络层:地址管理与路由选择;IP协议,典型设备路由器
链路层:相邻设备之间的数据选择;以太网协议,典型设备交换机
物理层:负责光电信号的传输;以太网协议,典型设备集线器
应用层由程序员实现,其他都由操作系统实现。
网络通信数据传输流程:
从上到下的过程就叫数据的封装,在对端电脑上解析的过程就叫分用
完成最后一步也就是完成数据链路层,然后物理层通过网卡进行发送,发送到对端电脑,再反向解析,最后解析出数据
我们所说的协议就是一个结构体头部