Tag Info

Hot answers tagged

88

I haven't read the whole RFC but the language in section 1.4 seems to suggest that any "lower level" protocol can be used. The interface between TCP and lower level protocol is essentially unspecified except that it is assumed there is a mechanism whereby the two levels can asynchronously pass information to each other. Typically, one expects the ...


75

Internet Protocol Suite TCP is not short for TCP/IP. TCP/IP is often used as a shorthand way of saying "The Internet Protocol Suite" and usually includes other standard protocols. When people say TCP/IP they are usually including UDP over IP (in which UDP is used instead of TCP) and a great many other protocols such as ARP, ICMP, DNS, SNMP and other ...


62

Imagine one of those pneumatic tube message systems. Ethernet is the tube used to send the message, IP is an envelope in the tube, and TCP/UDP is a letter in the envelope. Someone (an application) writes a letter and stuffs it in an envelope. Another person (a NIC) looks at the address on the envelope, puts it in a tube, caps it off, stuffs it in the right ...


41

HTTP does not care about—and is independent of—any of the lower-level protocols used to transport itself, even though it is itself stateless. The transport technology can be TCP, or Novell’s old SPX, or SCTP, or whatever else you can dream up, and HTTP will still work the same. HTTP does require a streaming or connection-oriented protocol—and depends on ...


39

By definition on a layered model as OSI or TCP/IP each layer works independent and not-aware of the lower layers. When you remove the cable, it's a physical disruption (layer 1), so almost inmediately ethernet (layer 2) detects a loss of signal (if you're on Windows you will see the very dreaded pop-up informing network disconnected) IP (layer 3) and TCP ...


31

The reason why TCP/IP is such a common abbreviation (as opposed to, say UDP/IP or SCTP/IP) is because the two protocols were designed together, and in the original paper by Vint Cerf and Bob Kahn, the two concepts were combined together into a single protocol. Soon thereafter they were divided into IP to provide routing and TCP to provide flow control, ...


28

There's a lot of layers to this. And importantly, many of them are interchangeable. For example, you can have a coax-cable network, an ethernet, or a Wi-Fi down at the physical level. HTTP works on top of all of those, but each of them has a slightly different handling of the payload being sent around. HTTP works on top of another protocol, called TCP, ...


27

Most home routers use a special-case of NAT called PAT. You'll also see it referred to as NAPT, or IP Masquerading. All three of the latter terms mean the same thing in general use. (The acronyms - Network Address Translation / Port Address Translation / Network Address Port Translation) When the packet goes out from your internal machine, the source ...


26

A port isn't open if something isn't listening for a connection on it. The reason it is bad form to have all ports open to everywhere is that it exposes those services that are listening on those ports to exploits. That is why firewalls exist, to limit what is allowed to connect to certain ports, to reduce the surface area exposed by services. EDIT To ...


21

They are addresses that can be resolved locally. They don't need a gateway because they don't need to be routed.


21

You can replace IP with something else. In fact, that's exactly what you're doing when you're using TCP over IPv6. TCP is still TCP, but the IP is v6 instead of v4. AFAIK, nobody's created any other layer-3 protocols to work with TCP above them, but there's no reason you couldn't.


21

You cannot just force a program to use UDP instead of TCP, without rewriting parts of the program itself. These protocols are just too different to be interchangeable. TCP is stream-oriented (the receiver sees everything as a continuous stream in the exact order that the sender output it); UDP is datagram-oriented (each datagram is sent in a separate ...


17

Even though the question has been fully covered. I feel like this process should best be described step-by-step. For this example, I sit in a private LAN connected to the Internet through a router. Because our network shares a single public IP address, we use NAT. So when I request the page superuser.com that will generate many IP packets. Let's look at a ...


16

Packet is an ambiguous term here because it is sometimes misused to refer to different elements for your transmission. Lets see what your data is wrapped up in and you'll see what I mean, and hopefully get the answer you wanted: Lets assume you're sending 1 byte of data1 over the internet, on the TCP/IP model. The data starts on the application level ...


16

In HTTP/0.9 (not used anymore), each request uses a separate TCP connection, and the end of a response is signalled by closing the connection. In HTTP/1.0, an unofficial but very widely supported "Connection: Keep-Alive" request header can be used to request a persistent connection if the server supports it. In HTTP/1.1, persistent connections are the ...


16

IPv6 addresses are 128 bits. We don't do dotted decimal octet form any more. 2607:f750:0:3f::f59 is an abbreviated human-readable representation of an IPv6 address. The full human-readable representation substitutes zeroes for the ::, and is 2607:f750:0000:003f:0000:0000:0000:0f59. Each part of the address is very simple. It's a 16-bit number in ...


15

You can use netstat for this. See the example (I grepped for ssh): netstat -putan | grep ssh tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1725/sshd tcp 0 0 1.2.3.4:45734 1.2.3.5:22 ESTABLISHED 2491/ssh tcp6 0 0 :::22 :::* LISTEN ...


14

You may be thinking of number of ports. There are 65536 ports available in the TCP in the current versions of IPv4. This is not just a Linux limitation, its part of the protocol. Your IP address identifies your machine, and the port identifies a program on your machine. But, the number of connections isn't limited by that. A connection consists of 5 ...


13

Why would a port number ever be used to tell what kind of application data protocol resides inside when there's not absolute guarantee? Because guessing is a terrible way to run things, and there is no way you can stop, for example, someone malicious from sending the wrong thing anyway. So, it helps in the case where everyone is playing nice, and ...


11

Usually this is because somewhere between you and the other server there's a firewall limiting each HTTP stream to 10Mbps. When you use multi-thread, you get 2x 10Mb (one for each thread).


9

Neither TCP nor UDP can guarantee packets arrive at their destination in sequence because they both use IP packets, and IP doesn't do any sequencing. With UDP, there are two separate issues. One is the order of the packets that comprise a single datagram. You can't control this, and every implementation I know of will send them in order. However, you can ...


9

First, what you say is not factually correct: Linux up to kernel version 2.6.18 uses BIC by default. Linux kernel 2.6.19 and later uses CUBIC by default. Linux's TCP congestion control mechanisms are pluggable, e.g. you can change them on the fily. Windows XP and earlier uses TCP Reno (or New Reno) Windows Vista and later also has Compound TCP, which is ...


9

The nc (netcat) command will probably do what you need. It can listen on a specified port for TCP or UDP connections, and can also make outbound connections, depending on the command line arguments you specify. If that's not what you're looking for, let me know.


9

Computers use a concept called "ports", analogous to "extensions" for a telephone switchboard: The client is not only "calling" the server IP address, but also sends the request to a specific port on that server. There are thousands of ports (wikipedia list), e.g. port 80 is the default for HTTP. The trick is that a program, e.g. a webserver, can register ...


9

I tried it with several SSH connections from Windows to Unix and Unix to Unix and I don't get a single UDP packet on port 22. Also the server only listens on TCP. In this thesis they tried to implement UDP for SSH transport, but they also mention that the default only uses TCP: ". OpenSSH is using TCP consistently for all its network connections and thus ...


9

"HTTP is stateless" means that each HTTP transaction (request-response pair) can be processed independently of any state from previous request-response pair. To transport the particular request-response pair you need a protocol that is able to carry arbitrarily large block there and arbitrarily large block back, and to do that over a layer with limited ...


8

Netcat nc mail.server.net 25 (Windows version) Socat socat - TCP4:www.domain.org:80 (Windows version) Reading socat's examples page never fails to boggle my mind.


8

It sounds like the service he's using might be UnoTelly Their FAQ has an entry for how it works, but it's not very enlightenning: UnoTelly DirectDNS, like its name implies, utilizes properitory DirectDNS technology to give you access to blocked websites. Unlike VPN or Proxy, UnoTelly DirectDNS only shields the relevant traffic so you can access blocked ...


8

iPerf uses a default of 1Mb/sec for UDP tests. Use the -b flag on the iperf client to specify the UDP bandwidth you want to transmit at e.g. iperf -c 10.79.175.219 -u -f m -b 100M


7

This is called selective acknowledgement, and is already included in the TCP specification defined in RFC 2018. This would allow the client to indeed resend just bytes 15001 to 20000 (since they are in different packets/segments if you had split them as you say), but more interestingly, it even allows out-of-order acknowledgements. From RFC 2018: When ...



Only top voted, non community-wiki answers of a minimum length are eligible