socket编程之中的一个:计算机网络基础
在開始学习网络之前先复习下计算机网络基础吧。
鲁迅说,天下文章一大抄。看你会炒不会炒,基础知识就抄抄书吧。
一 分层模型
1 为什么分层
为了简化网络设计的复杂性。通讯协议採用分层结构。各层协议之间既相互独立又相互高效的协调工作。
对于复杂的通信协议。其结构应该是採用层次的。分层的协议能够带来非常多便利:
分层的优点有:
a> 灵活性好:当不论什么一层发生变化时,仅仅要层间接口关系保持不变,则在这层以上或下面各层均不受影响。
此外,对某一层提供的服务还可进行改动。当某层提供的服务不再须要时,甚至能够将这层取消。更easy管理。
b> 各层之间是独立的:在各层间标准化接口。同意不同的产品仅仅提供各层功能的一部分,某一层不须要知道它的下一层是怎样实现的,
而只须要知道该层通过层间的接口所提供的服务。
因为每一层只实现一种相对独立的功能,所以比較easy实现!
2 分层
标准七层结构和有用五层结构
socket详细相应那的应该是运输层和网络层。
二 socket简单介绍
socket即套接字。最原始的socket是继承unix系统中。后来微软推出了winsocket。
socket编程会中涉及到一些地址。port,字节序等概念,最好是了解下。
这里就直接说socket建立连接的过程了,如图:
大致分为三个大的步骤:
1 服务端监听
2 client请求连接
3 连接确认
下一节在具体的说具体的连接步骤吧。
socket编程之中的一个:计算机网络基础的更多相关文章
- 27、通过visual s'tudio 验证 SOCKET编程:搭建一个TCP服务器
本文就是在windows下进行socket编程,搭建一个TCP客户端. 在visual studio下编程,首先在windows下进行初始化(这点在linux下是不需要的): /* 初始化 Winso ...
- Socket编程——怎么实现一个服务器多个客户端之间的连接
package coreBookSocket; import java.io.IOException; import java.net.ServerSocket; import java.net. ...
- Socket编程回顾,一个最简单服务器程序
第一次接触服务器是快毕业的时候,是不是有点晚(# ̄ω ̄),这也导致工作方向一直没考虑网络编程这块,做了好多其他没啥“意思”的技术. 之前看到一篇博文提到程序猿80%都是庸才,10%是人才,10%是天才 ...
- C#socket编程之实现一个简单的TCP通信
TCP(TransmissionControl Protocol)传输控制协议. 是一种可靠的.面向连接的协议(eg:打电话).传输效率低全双工通信(发送缓存&接收缓存).面向字节流.使用TC ...
- jquery-mobile 学习笔记之中的一个(基础属性)
写在前面 本文是依据w3c 学习轨迹,自己研习过程中记录下的笔记,仅仅供自己学习轨迹记录之用,不喜勿喷. 0 引入库 引入相应的文件: <link rel="stylesheet&qu ...
- Android应用开发提高篇(4)-----Socket编程(多线程、双向通信)
链接地址:http://www.cnblogs.com/lknlfy/archive/2012/03/04/2379628.html 一.概述 关于Socket编程的基本方法在基础篇里已经讲过,今天把 ...
- 【VS开发】socket编程原理
socket编程原理 1.问题的引入 1) 普通的I/O操作过程: UNIX系统的I/O命令集,是从Maltics和早期系统中的命令演变出来的,其模式为打开一读/写一关闭(open-write-rea ...
- Go语言系列- Socket编程和Redis
Socket编程 一.socket编程概述 什么是socket编程? socket编程是计算机PC机器上2个程序通过一个双向的通信连接实现数据的交互,这个连接的一端就是一个socket.socket的 ...
- winsock教程- windows下的socket编程(c语言实现)
winsock教程- windows下的socket编程(c语言实现) 使用winsock进行socket 编程 这是一个学习windows下socket编程(c语言)的快速指南.这是因为一下 ...
随机推荐
- 可以通过shadowserver来查看开放的mdns(用以反射放大攻击)——中国的在 https://mdns.shadowserver.org/workstation/index.html
Open mDNS Scanning Project 来自:https://mdns.shadowserver.org/ If you are looking at this page, then m ...
- Optional arguments
We have seen built-in functions that take a variable number of arguments. For example range can take ...
- array_unique和array_flip 这两个函数的区别
array_unique和array_flip 这两个函数的区别 标签(空格分隔): php array_unique 和 array_flip 验证 1 没有排序的数组 2 array_unique ...
- 1355: [Baltic2009]Radio Transmission
Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 958 Solved: 659[Submit][Status][Discuss] Description ...
- Intellij使用"easyexplore"
刚开始接触Intellij,里面有很多东西还不太会用,平时在eclipse里面用的很方便的easyexplore能帮助快速打开文件目录,Intellij中本身就有这样的功能,只是默认没有开启,需要我们 ...
- iview中 ...用法
1. 2. 3. 4.可以将divs转为数组解构 5. 解构 6.作为函数的参数 7.作为参数遍历
- Rain and Umbrellas(dp)
题目链接 http://codeforces.com/problemset/problem/988/F 令dp[i][j]为走到目标为i处,手里拿着第j把伞,同时注意,在某处可能存在不止一把伞 #in ...
- shell脚本备份nginx日志
vim /data/runlog.sh #编辑一个 shell 脚本 #!/bin/bash LOGP ...
- CF817F MEX Queries(线段树上二分)
题意 维护一个01串,一开始全部都是0 3种操作 1.把一个区间都变为1 2.把一个区间都变为0 3.把一个区间的所有数字翻转过来 每次操作完成之后询问区间最小的0的位置 l,r<=10^18 ...
- Redis批量执行(如list批量添加)命令工具 —— pipeline管道应用
前言 Redis使用的是客户端-服务器(CS)模型和请求/响应协议的TCP服务器.这意味着通常情况下一个请求会遵循以下步骤: 使用Redis管道提升性能 (1)客户端向服务端发送一个查询请求,并监听S ...