What are good resources to learn HTTP protocol? - http

Nowadays, I'm reading Front-End Developer Handbook. Because I want to be successfull front-end developer. I've read Coderbyte's guide. There is also an HTTP suggestion in the article.
I researched for HTTP resources. i've found these links:
https://developer.mozilla.org/en-US/docs/Web/HTTP
http://httpwg.org/specs/
https://httpstatuses.com/
http://chimera.labs.oreilly.com/books/1230000000545/index.html
https://code.tutsplus.com/tutorials/http-the-protocol-every-web-developer-must-know-part-1--net-31177
https://code.tutsplus.com/tutorials/http-the-protocol-every-web-developer-must-know-part-2--net-31155
So, I'm looking for different resources to learn HTTP, DNS, Browsers. What are your suggestions to learn HTTP, DNS and Browsers?

Disclaimer: Don't be surprised if this question gets closed. Asking for this kind of resources is off topic here. I would post it a comment, but the content wouldn't fit well, hence I'm posting it as an answer.
RFCs
The RFC's 7230-35 are the official references for the HTTP/1.1 protocol and these document define how HTTP is supposed to work:
RFC 7230: Message Syntax and Routing
RFC 7231: Semantics and Content
RFC 7232: Conditional Requests
RFC 7233: Range Requests
RFC 7234: Caching
RFC 7235: Authentication
For the HTTP/2 protocol, consider the following RFCs:
RFC 7540: Hypertext Transfer Protocol Version 2 (HTTP/2)
RFC 7541: HPACK: Header Compression for HTTP/2
It is worthwhile to mention that documents such as RFC 1945, RFC 2068, RFC 2616 and RFC 2617 are obsoleted and must not be used as reference anymore.
In fact, RFCs are official references and are not meant to be tutorials. RFCs are like legal contracts. If you are looking for something close to a tutorial, I recommend the next resource below.
Mozilla Developer Network web docs
The MDN web docs about HTTP is also a credible source.

I found chapter one of the O'Reilly book "Designing Evolvable Web APIs with ASP.NET" to be a really good summary of HTTP. The book in general is aimed at .NET but the initial chapter is not.
You can read it online free: http://chimera.labs.oreilly.com/books/1234000001708/ch01.html

The most fundamental work from what I have read is The TPC/IP Guite
http://www.tcpipguide.com/free/t_TCPIPHypertextTransferProtocolHTTP.htm
you can call the book 'How the Internet works'
btw it's free

I'd suggest the free book: HTTP Succintly as a great starting point before deep diving into the RFCs.

Related

what is the RFC for the BitTorrent protocol?

Im just looking for the RFC of BitTorrent Protocol.
I reached to the document here is it but what is actually I want is the number of the RFC
You can actually google that.
https://www.rfc-editor.org/rfc/rfc5694

RFCs for implementing HTTP server

I'm thinking to start a side project to learn how HTTP servers are built.
I started searching for it and came to know that the specifications are mentioned in RFC documents.
But there are over 8200 RFCs as of August 2017.
Further searching about it got me specific RFC to use for HTTP i.e., RFC2616 on software engineering stackexchange here. There is a comment that says "In 2014, RFC2616 was replaced by multiple RFCs (7230-7237)."
So, do we need to abandon RFC2616 completely and read RFCs(7230-7237)?
We can clearly see on RFC2616 that Obsoleted by RFC 7230, RFC 7231, RFC 7232, RFC 7233, RFC 7234, RFC 7235.
So, what are the RFCs for building HTTP server? Should I only read the documents mentioned as Obsoleted by?
Yes, you just need RFCs 7230..7236 (for HTTP/1.1) and RFC 7540+7541 (for HTTP/2).

HTTP/1.1 protocol testing tool

Currently I'm implementing a HTTP server targeted at extremely constraint environments (I'd loved to use something readily available, but there was nothing matching my needs).
The HTTP/1.1 protocol is a tricky beast with lots of caveats (the RFC is one thing, but the actual specification is "HTTP is whatever Apache accepts" ;) )
I'd like my HTTP server to be as conformant as possible and for that I must test it of course. So I'm looking for a tool that can reliably and reproducible craft HTTP queries, most importantly also the uncommon cases, like Chunked Transfer + Multipart POST in a single query (my attempts at making curl, wget, Firefox, Chromium or Opera creating such a query were fruitless).
TL;DR: I need a tool for testing HTTP/1.1 protocol server implementations.

The essence of HTTP protocol

There's too much elaboration about the HTTP protocol. But to its essensce, it's nothing but a string of ASCII characters transmitted over the TCP protocol. And the string defines the semantic of the protocol. Am I right on this?
If so, 2 questions follows:
Can we devise any protocols as we want, cause it just looks like
passing strings over the internet.
Why don't we compress the HTTP strings before we pass it down to the TCP level?
That's right, HTTP is by no means a special, but because it underpins the web it receives a lot of attention. It's an application level protocol like SMTP or FTP or any other.
Yes, you could design any protocol you like. For fun, grab an RFC for SMTP, FTP or HTTP and connect to your own server and learn the protocol. RFC2324 is also required reading - http://www.faqs.org/rfcs/rfc2324.html
Lack of HTTP header compression has been talked about a lot in recent years. See Steve Souders blog/books, YSlow! and Google Page Speed sites. The SPDY protocol is probably going to be the front runner at addressing several of the current issues with HTTP connection management, performance and security - http://www.chromium.org/spdy/spdy-whitepaper
Sure. But you would have to get others to adopt your protocol (unless it is an internal/proprietary spec). And if you can coherently express your communique in the form of HTTP, why not use it? It's widely implemented in virtually every language and operating system, and is well understood and easily debugged. Don't just create protocols for the heck of it.
The HTTP specification provides for several common compression schemes. gzip and deflate are particularly widely used. See, for example, Apache's mod_gzip and mod_deflate. Clients and servers routinely negotiate compression on your behalf.

What are the standards behind realtime web?

I'm looking for standards that are behind realtime web applications.
I know about W3C Websockets API and IETF Websockets protocol, Bayeux protocol and Server-Sent Events standards.
Are there any other standards for techniques like long-polling, callback-polling, Iframe streaming, htmlfile streaming, XHR streaming, multipart streaming, Direct Socket?
Long polling doesn't have a dedicated standard. It is effectively an implementation technique layered on top of existing standards like HTTP and XMLHttpRequest (which is standardized as W3C working drafts). The Wikipedia page is a pretty good reference.
XMPP standardizes a technique called BOSH which is also implemented as long-lived HTTP.
multipart/x-mixed-replace was implemented by Netscape but not IE, and is not a standard. The Push technology Wikipedia page is a good reference.
Hope these help.
If anyone is interested in a Java implementation I just wrote a sample app and a blog post about it. It uses Java, Maven, Comet, Bayeux, Spring.
http://jaye.felipera.cloudbees.net/
http://geeks.aretotally.in/thinking-in-reverse-not-taking-orders-from-yo
I have found an interesting answer on quora (http://www.quora.com/What-are-the-standards-behind-realtime-web) :
The following protocols are core to the Realtime Web:
HTTP protocol in general makes so much possible WebSockets protocol
PubSubHubbub protocol
Webhooks eXtensible Messaging and Presence Protocol (XMPP) & BOSH
(http://xmpp.org/extensions/xep-0...)
Activity Streams (as pointed
out by Chris Saad)
http-live-streaming / HTTP Long-Polling

Resources