python 安卓应用层_从小白到小黑 python学习之旅 日常总结 35(网络编程2 # 三次握手 四次挥手 应用层)...

传输层 tcp\udp>>>基于端口

那么我们通过ip和mac找到了一台特定的主机,如何标识这台主机上的应用程序,答案就是端口,端口即应用程序与网卡关联的编号。

端口范围0-65535,0-1023为系统占用端口

传输层功能:建立端口到端口的通信

端口号 是操作系统自动分配的ip+port=》标识全世界范围内独一无二的一个基于网络通信的应用程序

基于tcp协议通信之前:必须建立一个双向通信的链接

建立链接是为了传数据做准备的,三次握手即可

数据传输

断开链接时,由于链接内有数据传输,所以必须分四次断开

应用层给传输层(tcp协议)的数据过多的话 会将数据多段传输

tcp协议的半连接池:backlog #[链接请求1,链接请求2,链接请求3,链接请求5]

就是服务端 同时能接受链接请求的“池子”

tcp是可靠传输的

发送数据必须等到对方确认后才算完成,才会将自己内存中的数据清理掉,否则重传

ps:当服务端大量处于TIME_WAIT状态时意味着服务端正在经历高并发

udp是不可靠传输的

不需要建联接,发送数据无须等到对方确认即可完成

应用层:

可以自定义协议=》头部+数据部分

自定义协议需要注意的问题:

1、两大组成部分=头部+数据部分

头部:放对数据的描述信息

比如:数据要发给谁,数据的类型,数据的长度

数据部分:想要发的数据

2、头部的长度必须固定

因为接收端要通过去掉头部获取所接接收数据的详细信息

网络通信实现

想实现网络通信,每台主机需具备四要素

本机的IP地址

子网掩码

网关的IP地址

DNS的IP地址

获取这四要素分两种方式

1.静态获取

即手动配置

2.动态获取

通过dhcp获取

以太网头

ip头

udp头

dhcp数据包

(1)最前面的”以太网标头”,设置发出方(本机)的MAC地址和接收方(DHCP服务器)的MAC地址。前者就是本机网卡的MAC地址,后者这时不知道,就填入一个广播地址:FF-FF-FF-FF-FF-FF。

(2)后面的”IP标头”,设置发出方的IP地址和接收方的IP地址。这时,对于这两者,本机都不知道。于是,发出方的IP地址就设为0.0.0.0,接收方的IP地址设为255.255.255.255。

(3)最后的”UDP标头”,设置发出方的端口和接收方的端口。这一部分是DHCP协议规定好的,发出方是68端口,接收方是67端口。

这个数据包构造完成后,就可以发出了。以太网是广播发送,同一个子网络的每台计算机都收到了这个包。因为接收方的MAC地址是FF-FF-FF-FF-FF-FF,看不出是发给谁的,所以每台收到这个包的计算机,还必须分析这个包的IP地址,才能确定是不是发给自己的。当看到发出方IP地址是0.0.0.0,接收方是255.255.255.255,于是DHCP服务器知道”这个包是发给我的”,而其他计算机就可以丢弃这个包。

接下来,DHCP服务器读出这个包的数据内容,分配好IP地址,发送回去一个”DHCP响应”数据包。这个响应包的结构也是类似的,以太网标头的MAC地址是双方的网卡地址,IP标头的IP地址是DHCP服务器的IP地址(发出方)和255.255.255.255(接收方),UDP标头的端口是67(发出方)和68(接收方),分配给请求端的IP地址和本网络的具体参数则包含在Data部分。

新加入的计算机收到这个响应包,于是就知道了自己的IP地址、子网掩码、网关地址、DNS服务器等等参数

DNS(域名系统):主要用于域名与 IP 地址的相互转换

socket介绍 #让操作系统来包解应用层一下的头的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值