网络编程
2019-06-25 16:28:49 0 举报
AI智能生成
网络编程
作者其他创作
大纲/内容
网络基础
两个运行中的程序如何传递信息? 答 :通过文件
两台机器上的两个运行中的程序如何通信? 答:通过网络
网络应用开发架构
C/S
C:client:客户端
S:server:服务端
B/S
B:browser:浏览器
S:server:服务端
同一程序的入口
B/S和C/S架构的关系:B/S是C/S的特殊架构
网卡:是一个实际存在在计算机的硬件
mac地址:每一块网卡上都有一个全球唯一的mac地址
交换机:是连接多台机器并帮助通讯的物理设备
交换机的通讯方式:单播、广播、组播
交换机实现的ARP协议(地址解析协议):通过ip地址获取一台机器的mac地址
路由器:完成局域网与局域网之间的通信,能识别ip地址
协议:两台物理设备之间对于要发送的内容、长度、顺序的一些约定
ip地址
ipv4协议:4位的点分十进制 32位二进制表示
ipv6协议:6位的冒分十六进制 128位二进制表示
公网ip
为什么外地的朋友的电脑我们无法访问? 答:每一个ip如果想要被访问到,那么这个ip地址必须是你申请的
内网ip
192.168.0.0—192.168.255.255
172.16.0.0—172.31.255.255
10.0.0.0—10.255.255.255
网关ip:一个局域网的网络出口,访问局域网之外的区域都需要经过路由器和网关
网段:指的是一个地址段
子网掩码:判断两台机器是否在同一个网段之内
ip地址:能够确认一台机器
port:端口(0—65535)
ip + port = 确认一台机器上的一个应用
协议
TCP协议(打电话)
TCP协议特点:是一个面向连接的,流式的、可靠的、慢的、全双工通信
TCP协议应用:邮件、文件、http、web
三次握手:accept接收过程中等待客户端的连接,connect会发起一个syn连接请求,如果得到了server端响应ack的同时,还会再收到一个来自server端发来的连接请求,client端进行回复之后,就建立起一个TCP协议的连接。
四次挥手:server端和client端对应在代码中都有close方法,每一段发起的close操作都是一次fin的断开请求,得到断开确认ack之后,就可以结束一端的数据发送
在建立起连接之后:发送的每一条信息都有回执,为了保证数据的完整性,还有重传机制
长连接:会一直占用双方的端口
IO(input,output)操作:输入和输出都是相对内存来说的
write send/sendto — output
read recv/recvfrom — input
能够传递的数据长度几乎没有长度限制
UDP协议
UDP协议特点:是一个面向数据报的,不可靠的、速度快的,能够完成一对一、一对多、多对一、多对多的高效通讯
UDP协议应用场景:即时通信类、在线视频
UDP协议能够传递的数据长度是有限的,是根据传递设备有关的(1500字节左右)
socket(套接字)
socket定义:工作在应用层和传输层之间的抽象层,帮助我们完成了所有信息的组织和拼接
socket对于程序员来说,已经是网络操作的最底层
socket历史:
同一台机器上的两个服务器之间的通信基于文件
基于网络的多台机器之间的多个服务通信
粘包
什么是粘包现象?
发生在发生端的粘包:由于两个数据的发送时间间隔短 + 数据长度小 ,所以由TCP的优化机制将两条信息作为一条信息发送出去,其原因是为了减少TCP协议中“确认收到”的时间
发生在接收端的粘包:由于TCP协议中所传输的数据无边界,来不及接收多条数据,数据会在接收缓存区粘黏在一起。本质:接收信息边界不清晰
解决粘包问题
自定义协议1:
先发送报头
报头长度四个字节
内容是即将发送的报文长度
struct模块 pack字节长度:四字节
在发送报文
自定义协议2(用来做文件发送的协议)
发送报头字典的字节长度
在发送字典(字典中包含文件的名字、大小等信息)
在发送文件内容
OSI七层模型
0 条评论
下一页