网络编程 网络编程技术(二)——C#发送HTTP POST/GET请求 话不多说,直接贴代码。这里给出最简单的一个C#发送HTTP请求的例子 <code class="language-csharp ">using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; namespace HTTPLib { public class HTTP { private CookieContainer cookie; public string HttpPost(string Url, string postDataStr) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = Encoding.UTF8.GetByteCount(postDataStr); request.CookieContainer = cookie; Stream myRequestStream = request.GetRequestStream(); StreamWriter […]
程序 网络编程技术(一)——网络七层协议 前言 2019年再来讲这些最基础也是最底层的协议,看起来过时,但是网络发展了几十年,依旧这么经典,从七大协议,到TCP三次握手,再到HTTP协议、套接字通信,学习路径无非就这些。 其实所有的内容都可以在百度百科甚至别人写的博客文章上面轻易找到,但是我讲解的却是一些核心且精华而且是易懂的部分。我也是一个初学者,一个大一软件学院的学生,这些知识只是业余时间所学得来,所讲的内容也是白话文,不会有各种专业术语,零基础的人也能听懂。若有不到之处敬请提出! OSI七层协议 先来一张最简单最常见的表 物理层 物理层,顾名思义就是网络传输在物理上的介质,是OSI协议的最底层,也是最基础的一层。物理层采用了各种现成的协议,如IEEE802.3/802.4/802.5等 其它的我认为不需要知道,作为小白的我也只知道这些。 我们日常工作学习中,采用的最常见的物理层链接方式就是随处可见的RJ45网线,我们称之为Ethenet/RJ45协议。另外在服务器上面使用的接口也从我们的铜芯线缆改为光纤传输。 数据链路层 数据在物理层上的传输是01的二进制,而数据链路层的工作就是讲电信号进行分组,这就出现了现在最广泛的以太网协议,每一组的数据称为一帧,里面包含了接收数据者的信息以及要传输的数据内容。 网络层 数据链路层的数据传输方式是通过广播的方式来进行接收。广播的含义,例如5台计算机在同一局域网内,当A发出数据,会传输到所有的5台计算机,其中每台计算机会对数据包中包含的接受者信息开始判断接受者是不是自己,若不是自己则丢掉这个包。 那么不同的两个局域网该怎么通讯,这就出现了IP协议,倘若局域网内的所有计算机都拒绝了这个包,那么这个包将交给这个局域网内的一台网关进行处理,网关去负责和别的局域网进行通信。 传输层 传输层是整个网路协议中最值得学习,也是最精华的一部分。 两台计算机能进行通信了,也能找到对方在哪了,现在就要进行数据的通信了,可是也不能乱来,进行通信也要有一定的标准,这就有了传输层。 传输层有2大协议,TCP和UDP 我们浏览网页,看视频,看这篇文章的时候,都是TCP协议进行传输的。 TCP协议是一种面向连接的协议,双方构建起一个连接,知道我发出去的数据包对方有没有收到,对方发来的数据包我有没有收到,双方互相接收的数据包是否完整,有没有进行丢包。TCP协议是可靠的传输协议 UDP协议就不一样,它比较粗暴,不用进行连接,甚至都不知道对方在不在线,直接发送一个数据包到目标的地址,也不知道对方有没有收到,就好比你直接写了一封信,写一个地址就寄出去,不知道对方有没有收到。我们进行的网络游戏,都是UDP进行发包的,是为了保证效率,为了保证网络游戏不同客户端之间的同步性。 会话层 会话层的概念比较模糊,在我们能够正常进行通信了,我们为了提高效率,会话层帮我们做的工作就是自动收发包,自动寻址的操作。 表示层 表示层则为了解决不同操作系统之间进行网路通信的语法问题。 应用层 应用层就好理解了,我们有了一切的基础,就可以在这之上进行开发了,比如开发电子邮件SMTP/POP协议等,访问网页的HTTP协议,远程传输文件的FTP协议等等。 总结 网络七层协议非常好理解,一层层的嵌套关系,即使网络发展再快,也是少不了这7层协议的。
科技杂谈 网络编程杂谈——HTTPS与TLS v1.3 前言 近几年,HTTPS的网站开始普及,所有大型的网站均启用了全站HTTPS,淘宝,百度,京东,网易等。 可能所有人上网的时候都不会关注网址URL前面的那把小绿锁,这就是HTTPS加密的网站,甚至更多人不知道HTTPS的存在。 HTTPS是为了让HTTP传输更加安全,在没有启用加密之前,所有的流量都是在TCP包中通过明文传输的,极度不安全,在访问一些网站时,主流的浏览器都会在URL左侧显示不安全的网站。 HTTPS的基础就是SSL协议,是在应用层与传输层之间的一层协议,旨在为用户提供安全的HTTP传输。 SSL 那么说到SSL,就要讲一下SSL的发展史。SSL从最初的1.0到SSL2、SSL3,到今天的TLS,加密的方式与套件在不断地更新,安全性逐步提高,但是即使有HTTPS,现在也已经淘汰了SSL1和2,因为它们还是不够安全,足够强大的计算机仍旧可以解密它的密文。现在最安全的套件就是TLS 1.1以上。 这里给出一张图片 可见现在支持TLS v1.3的网站和客户端少之甚少,主流的HTTPS站都是TLS 1.2 2018年8月,IETF发布了TLS1.3协议的草案,旨在简化TCP握手阶段的速度,以及更强的安全性。 作为科技类的网站,当然是要率先支持啦。 (本站在myssl网站上的评分为最高级A+) 本站摒弃了SSL2和3,甚至 TLS1.0 都不支持(其实就是为了拿A+ 2333) 其实不支持较为低端的协议也有个弊端那就是其兼容性, 可以看到,从各种浏览器握手测试来看,IE8-10 Java7 以及旧版本的Mac OS都不能良好支持,因为我去除了TLS1.0。 所以访问本站的最佳姿势就是Windows 10 或者 Mac OS 10.8以上,使用最新版的Chrome浏览器。 结尾语 HTTPS必将是未来网站的一种趋势,即使现在已经普及了,将来的网站我相信都会启用全站HTTPS加密,因为始终要相信,即使是再不重视网站的安全,数据也是是无价的。
程序 网络编程技术(零)——预告 最近在学习网络编程,也就记录一下日常学习有关网络编程的一些技术。 大致要写的内容,看情况来吧。 比如说从最基础的网络七层协议开始,再讲传输层的TCP、UDP等协议 再扯一些有关的事物,就是日常生活中我们所碰到的一些与网络有关的事物,比如网卡,网线,网络存储等 反正就是很杂,想到什么写什么,没准一会儿扯个NAS(因为我刚买了NAS)(这好像和编程没关啊→_→),一会儿再讲一下科学上网。。 期待更新吧
程序 C-Free 5.0 Rhyland 魔改版(计划停止) 计划停止说明 首先就是这个项目,它文件丢了。。。 因为我重做了系统,然后就没有然后了 此项目正是宣布暂停 前言 先写点前面的话,首先这个版本我修改了不少东西,最大的改进就是 MinGW 的改进。 基本没有破坏原有IDE,只为提升用户体验 有任何BUG直接PM或者评论 软件介绍&下载 截图 特性 安装完成后自动永久注册激活 升级 MinGW 构建套件到 6.3.0 UI美化 常用功能修改 注意事项 *请先卸载原先版本!该版本与原先版本不兼容! 下载 因为软件内部存在一些bug,暂时撤下 下载节点 站内直链 国内CDN加速 链接 暂停下载 暂停下载 国内CDN会快很多,但是CDN流量很贵,所以大家能忍受稍微慢一点的话就从直链下载吧。