网络编程
1、网络编程
网络编程的三要素 【1】IP地址:唯一标识网络上的每一台计算机 两台计算机之间通信的必备要素 【2】端口号:计算机中应用的标号(代表一个应用程序) 0-1024系统使用或保留端口 , 有效端口0-65536 【3】通信协议:通信的规则 TCP,UDP
相同的通信协议可以确保正确的解码(TCP/IP)。
2、网络模型
常见的网络模型:
3、传输层的通讯规则
传输协议
UDP:相当于収短信(有字数限制),
不需要建立连接,
数据报的大小限制在64k内,
效率较高,不安全,容易丢包
TCP:相当于打电话,需要建立连接,
效率相对比较低,数据传输安全,
三次握手完成。
(点名答到确认)
三次握手协议 四次分手协议
4、数据传输层,网络层,链路层和物理层的理解:
在需要通信的时候,首先在应用层声明什么协议?如Http协议,ftp协议,基于Linux的SSH协议。然后会加密等操作。
在数据传输层,会找到要传输的目的ip,封装发送请求包。要经过三次捂手,四次分手
三次握手>数据传输>四次分手成为一个最小粒度不可被分割
这样可以避免路由到不同的服务器问题。
在网络层是基于TCP/IP可靠的数据传输协议
通过子网掩码与ip的位移与运算,可以看到需要吓一跳的网关,
在上图我们可以清晰的看到:有ip地址,子网掩码,网关,DNS(解析域名的服务器)
下图为路由表。通过ip地址与掩码地址的做二进制位与运算,得到当前网络的网络号。找到下一跳的网关ip。在路由表是通过网卡生成的。首先ip与路由表中的子网掩码进行二进制位与运算,找Destination是否匹配。
如下图:和百度地址ip进行比较。可以看到走第三个条目。 可以找到吓一跳的ip地址。
换言之,同一个局域网不需要在查找下一跳的地址。可以匹配到第一个条目。
物理层和链路层。 网卡和二进制编码。
下一步找到链路层表。找到下一个网卡的mac地址。网络包最外层为mac地址。内存为最终目标ip地址,最里面ip有端口地址。
本文来自博客园,作者:Jerry&Ming,转载请注明原文链接:https://www.cnblogs.com/jerry-ming/p/16101603.html