网络编程协议

看完了大佬写的协议森林,依然不是很懂具体的细节,但还是有一些收获。

两台计算机的链接要经过许多层技术:物理层(网卡),连接层(局域网),网络层(路由器),传输层(TCP/UDP),应用层(DNS, HTTP, DHCP)。

标准的IP分类:

IP class    From                 To                   Subnet Mask

A           1.0.0.0         126.255.255.255       255.0.0.0

B           128.0.0.0     191.255.255.255       255.255.0.0

C           192.0.0.0     223.255.255.255       255.255.255.0

子网掩码与IP地址做位与运算,得到局域网地址与主机地址,同一局域网内的计算机可以直接依靠连接层通信。

部分IP地址段划分出来做保留,用作特殊用途:

From          To

10.0.0.0      10.255.255.255

172.16.0.0    172.31.255.255

192.168.0.0   192.168.255.255

自我总结(可能存在较大错误,欢迎批评指正):

DHCP在一个局域网中利用NAT技术动态分配IP地址,所分配的都是私有IP地址,好像无法被外部访问,当私有主机访问外部网络时由网关转换成公有IP地址,再进行通信。

家用路由器分配私有地址,可以任意设置网关、IP、子网掩码等,会由路由器转换,转换后可能仍为私有地址,还需传到另一个路由器(通常为运营商)转换到公有地址。

这些东西的水还是很深,一时半会难以下咽,也不会用到,还是等有空有心情了继续挖掘吧。。。

时间: 2024-10-10 12:15:49

网络编程协议的相关文章

Linux网络编程--协议的名称以及类型等处理

为了网络编程的便捷,系统提供了一组用于查询协议的值以及名称的函数,本篇文章主要介绍协议族函数的使用方法和注意事项. 下面用一段代码介绍函数的使用方法: #include <netdb.h> #include <stdio.h> /* 显示协议的项目 */ void display_protocol(struct protoent *pt) { int i = 0; if(pt){/*合法的指针*/ printf("protocol name:%s,",pt-&g

网络编程协议详解

OSI分层 (7层):物理层.数据链路层.网络层.传输层.会话层.表示层.应用层.TCP/IP分层(4层):网络接口层. 网际层.运输层. 应用层.五层协议 (5层):物理层.数据链路层.网络层.运输层. 应用层. 每一层的协议如下:物理层:RJ45.CLOCK.IEEE802.3 (中继器,集线器)数据链路:PPP.FR.HDLC.VLAN.MAC (网桥,交换机)网络层:IP.ICMP.ARP.RARP.OSPF.IPX.RIP.IGRP. (路由器)传输层:TCP.UDP.SPX会话层:N

重温网络编程——协议(二)

前言 在网络传输中有两种特别出名,一种是tcp,一种是udp. 他们都是基于套接字,tcp 属于sock_stream 类型,udp 属于sock_dgram. sock_steam: 传输过程不会有数据丢失. 按序传输数据. 传输的数据不存在数据边界. sock_dgram 强调快速传输而非传输顺序. 传输的数据有数据边界. 传输的数据可能会损坏. 4 限制了每次传输数据的大小. 具体可以参考tcp和udp. 关于数据边界: https://blog.csdn.net/boiled_water

JavaSE——UDP协议网络编程(二)

在 UDP 网络编程中,发送方与接收方没有建立联系,没有明显的服务器端和客户端的区别. 类 DatagramSocket: 此类表示用来发送和接收数据报包的套接字. 主要的构造方法: DatagramSocket():创建实例,绑定本机的默认IP地址,随机选择端口.通常用于客户端编程,没有特定监听的端口,仅仅使用一个临时的.  DatagramSocket(int port):创建实例,指定端口号,即固定监听Port端口的报文.  DatagramSocket(int port, InetAdd

网络编程——基于TCP协议的Socket编程,基于UDP协议的Socket编程

Socket编程 目前较为流行的网络编程模型是客户机/服务器通信模式 客户进程向服务器进程发出要求某种服务的请求,服务器进程响应该请求.如图所示,通常,一个服务器进程会同时为多个客户端进程服务,图中服务器进程B1同时为客户进程A1.A2和B2提供服务. Socket概述 ①   所谓Socket通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄.应用程序通常通过“套接字”向网络发出请求或者应答网络请求. ②   Socket是连接运行在网络上的两个程序间的双向通信的端点. ③  

Android网络编程系列 一 TCP/IP协议族

在学习和使用Android网路编程时,我们接触的仅仅是上层协议和接口如Apache的httpclient或者Android自带的httpURlconnection等等.对于这些接口的底层实现我们也有必要进一步的了解,这就要我们了解网络通信层了,提到网络通信层不得不说起ISO-OSI的七层协议经典架构,如图所示: 上图的左边部分就是osi架构模型了, ISO/OSI模型,即开放式通信系统互联参考模型(Open System Interconnection Reference Model),是国际标

基于 TCP/IP 协议的网络编程

在说明基于 TCP/IP 协议的网络编程之前,先来了解一下 Socket(网络套接字): 利用套接字(Socket)开发网络应用程序早已被广泛的采用,以至于成为事实上的标准 通信的两端都要有 Socket,是两台机器间通信的端点(API 原话) 网络通信其实就是 Socket 间的通信 Socket 允许程序把网络连接当成一个流,数据在两个 Socket 间通过 IO 传输 一般主动发起通信的应用程序属客户端,等待通信请求的为服务端 网络编程某种程度上可以称作"Socket 编程" T

网络编程UDP/TCP协议

一.网络编程三要素 IP:网络中设备的标识,不易记忆,可用主机名 端口号:用于标识进程的逻辑地址,不同进程的标识 传输协议:通讯的规则常见协议:TCP,UDP UDP 把数据打成一个数据包 , 不需要建立连接 数据包的大小有限制不能超过64k 因为无连接,所以属于不可靠协议(可能丢失数据) 因为无连接 ,所以效率高 TCP 需要建立连接,形成连接通道 数据可以使用连接通道直接进行传输,无大小限制 因为有链接,所以属于可靠协议 因为有链接,所以效率低 二.IP以及端口号 1.InetAddress

Android网络编程(一)HTTP协议原理

相关文章 Android网络编程(一)HTTP协议原理 Android网络编程(二)HttpClient与HttpURLConnection Android网络编程(三)Volley使用方法全解析 Android网络编程(四)从源代码解析volley Android网络编程(五)OkHttp2.x使用方法全解析 Android网络编程(六)OkHttp3使用方法全解析 Android网络编程(七)源代码解析OkHttp前篇[请求网络] Android网络编程(八)源代码解析OkHttp后篇[复用