CS/Network

· CS/Network
1. NAT(Network Address Translation)NAT은 네트워크에서 내부망과 외부망을 나누어주는 기술입니다.  (1) NAT의 도입 배경 IP가 네트워크에서 주소를 찾아가게 해주는데, NAT은 또 왜 필요한 것일까 의문을 가져볼 수 있습니다.  IPv4는 32비트입니다. 이것은 2^32개의 hosts를 지정할 수 있다는 의미입니다. 약 40억개의 IP 주소를 사용할 수 있습니다. 하지만 현대 시대의 네트워크 규모가 커지면서 host의 개수가 IP 주소를 초과합니다. 충분한 수의 IP 주소가 없기 때문에, 기기마다 IP 주소를 부여할 수 없는 상황입니다. 그래서 1996년, IPv6 라는 새로운 버전의 주소체계가 나왔습니다. 이 방식은 2^128개의 host를 지정할 수 있습니다. 하지만 ..
· CS/Network
네트워크 계층이란? 지금까지 살펴본 전송 계층에서의 관점에서 생각해보면, 네트워크란 복잡한 시스템이기 때문에 이 시스템을 잘 디자인하고 관리할 필요성이 있어 계층화시켜놓은 것이 네트워크 계층이라고 볼 수 있습니다. 따라서 상위 계층으로 갈수록 개념적이고 하위 계층으로 갈수록 디테일합니다.  애플리케이션 계층을 고려할 땐 Client와 Server가 request와 response를 주고 받는다고 할 때 데이터 유실을 고려하지 않았습니다. 이후 전송 계층에서 패킷 유실 상황에 대한 대처를 다루었습니다. 마찬가지로 전송 계층까지는 어떤 경로로 세그먼트가 가는지에 대해서는 다루지 안았습니다. 그 부분에 대해 네트워크 계층에서 살펴볼 수 있습니다.  네트워크 계층은 패킷을 목적지까지 배송시키는 일을 책임집니다..
· CS/Network
이번 포스팅에서는 혼잡 제어(Congestion Control)에 대해 알아보겠습니다.   TCP는 네트워크 상황에 따라 패킷을 보내는 속도를 조절해야만 합니다. 만약 네트워크가 복잡해지며, 한 라우터 버퍼에 데이터가 몰릴 경우에 송신자들은 다시 재전송을 하게 되고, 이것은 혼잡을 가중시켜 결국 오버플로우나 데이터 손실을 발생시키게 됩니다.   이렇게 네트워크가 막힌다면 네트워크에 접속한 모두가 패킷을 전송할 수 없으므로, 이를 파악하고 방지하기 위해 데이터 전송을 제어하는 것을 혼잡 제어(Congestion Control)라고 합니다.   네트워크 상황을 어떻게 확인할 것인가 네트워크 상황을 유추하기 위해서는 네트워크에서 직접 데이터를 보내줄 수는 있지만, 그렇게 하기 위해서는 라우터가 처리를 해주어야..
· CS/Network
이번 포스팅에서는 TCP의 주된 기능인 Flow control과 3 / 4 Way-Handshake에 대해서 살펴보겠습니다. 1. 흐름 제어(Flow Control) 데이터를 전송할 때, 짧은 시간에 많은 데이터를 보낼 수록 좋을 것만 같지만, 실제로는 그렇지 않습니다. 송신자에서 많은 데이터를 보내도, 수신자에서 그것을 처리할 수 없다면 많은 데이터들이 버려지게 됩니다.  그래서 수신자가 처리할 수 있는 용량을 송신자에게 피드백을 해주어야 합니다. 이를 위해 recv 버퍼의 크기를 기록해 전송하게 됩니다.  다시 TCP 세그먼트 구조를 살펴보겠습니다. 그림을 보면 4번째 줄에 Receive window가 있는 것을 볼 수 있습니다. 이것이 바로 현재 남은 recv버퍼의 크기를 가르킵니다.  만약 수신자..
· CS/Network
지난 포스팅에서 RDT 프로토콜에 대해 다루었습니다. 이번 포스팅에서는 TCP에 대해 살펴보겠습니다.   1. TCP : Connection-oriented transport먼저, TCP의 특징부터 살펴보면 아래와 같습니다. (1) Point-to-point UDP와 달리 TCP는 소켓 한 쌍의 통신을 담당합니다. UDP가 하나의 서버 소켓에 여러 개의 클라이언트 소켓이 매핑되어 통신을 하는 반면,  TCP는 한 서버 소켓에 무조건 하나의 클라이언트 소켓이 연결되는 것입니다. 즉, 하나의 sender에 하나의 receiver가 연결되는 것입니다.  (2) reliable, in-order byte stream신뢰성이 보장되므로 데이터가 유실되거나 데이터에 에러가 발생하지 않는다는 것입니다. 그래서, 데이..
· CS/Network
[네트워크] RDT(Reliable Data Transfer)1. RDT(Reliable data transfer) RDT란, 데이터를 전송할 때 패킷 데이터의 유실과 손상이 발생하지 않도록 보장해주는 프로토콜입니다. TCP와 UDP를 구분하는 큰 특징이기도 합니다. RDT의 단계를 이상적인dcloud.tistory.com 지난 포스팅에서 RDT에 대한 내용을 다루었습니다. 이번 포스팅에서는 Pipelined Protocol을 다루겠습니다.  1. Pipelined Protocol Pipelined Protocol은 신뢰성 있는 데이터 전송 프로토콜인 RDT의 성능 한계를 개선한 프로토콜 입니다. 여기서 신뢰성이란, 애플리케이션 계층에서 내려온 메시지가 유실되지 않고 에러 없이 상대 애플리케이션 프로세스..
동구름이
'CS/Network' 카테고리의 글 목록 (3 Page)