목록컴퓨터 네트워크 (32)
Shine's dev log
1. local 네트워크 보통 컴퓨터의 cmd에서 ipconfig 명령어를 통해 IP 주소를 확인해보면, 192.168.~ 이렇게 시작하는 경우가 많을 것이다. 하지만, 네이버에 IP 주소 확인이라고 검색해보면 나오는 IP주소는 위의 주소와 다르게 나온다. 같은 컴퓨터로 똑같이 IP 주소를 검색했는데 다르게 나오는 이유는 무엇일까? 보통 사용자들이 사용하는 네트워크는 local 네트워크를 사용한다. 아래 그림에서 라우터 오른쪽에 있는 subnet을 local 네트워크라고 칭하는데, 그 속에서는 자체적인 IP 주소를 사용한다. 원래 IP 주소는 겹치면 안되지만, local 네트워크 속에서는 다른 local 네트워크와 같은 IP주소를 써도 상관 없다. 예를들어, 110동 901호에 사는 사람과 112동 90..
1. IP 주소 일반적으로 IP 프로토콜에서는 호스트들을 구분하기 위해 IP 주소를 사용한다. 이때까지 가장 많이 쓰인 IPv4 주소의 경우, 32bit로 이루어져 있으며, 4개의 바이트를 . 으로 구분하여 표시한다. IP 주소는 아래와 같이 크게 두가지 파트로 나눌 수 있다. 1) subnet part - 라우터를 통하지 않고도 서로 물리적으로 닿을 수 있는 네트워크를 나타내는 bit들 - 네트워크 구조에서 라우터를 제거해보면 어느부분이 subnet인지 알 수 있음 2) host part - subnet part 하위의 bit들 2. CIDR (Classless Inter Domain Routing) IP 주소를 표현하는 방식에는 class를 활용하는 방법과 활용하지 않는 방법이 있다. 우선 class..
1. IP 프로토콜 다양한 프로토콜이 뒤섞여있는 다른 layer와는 다르게 network layer는 IP 프로토콜이 거의 유일하다고 볼 수 있다. 과거에는 network layer에 다양한 프로토콜이 존재하였으나 시간이 흐르고, 결국 살아남은 프로토콜은 IP(Internet Protocol) 하나뿐이다. IP의 특징으로는 크게 비신뢰성(unreliability)와 비연결성(connectionlessness)가 있다. 비신뢰성은 IP 프로토콜이 전송하는 데이터가 정확하게 갔는지 확인하지 않는 것이고, 비연결성은 데이터 전송 이전에 미리 설정과정을 거치지 않는 것이다. 따라서 신뢰성있는 통신을 하기 위해서는 상위 레이어의 TCP와 같은 프로토콜을 활용해야 한다. 2. IP header IP 프로토콜의 pa..
1. Network layer TCP/IP 프로토콜 스택에서 Transport layer 아래에 위치하며, 컴퓨터 네트워크의 핵심이라고 볼 수 있는 Network layer에 대하여 알아보자. 2. Network layer의 핵심 기능 Network layer의 핵심 기능은 크게 두가지가 있다. 1) Forwarding - data plane이 담당 - 패킷이 들어왔을 때, 내보내는 액션을 취하는 기능 2) Routing - control plane이 담당 - 들어온 패킷을 어디로 보낼지 판단하는 기능 - 라우터가 길을 판단하기 위해서는 라우터끼리 메시지로 길을 그려야 함 (Routing protocol) 3. Data plane & Control plane 1) Data plane - 적용 범위가 라우..
1. congestion control congestion control은 네트워크 상의 혼잡을 줄이기 위해 패킷의 전송량을 조절하는 것이다. 혼잡이 발생하는 이유는 라우터의 버퍼가 유한하기 때문이다. 이로인해 패킷 delay나 loss가 일어날 수 있기 때문에 congestion control이 꼭 필요하다. 아래 그림에서 라우터의 input link로 들어가는 패킷의 양이 증가함에 따라 output link로 나가는 패킷의 양은 그래프와 같이 나타난다. 그래프에서 가장 최대값 지점을 찾는 과정이 congestion control이라고 보면 된다. 2. cwnd (congestion window) congestion window (혹은 flight size)는 sender가 ack을 받기 전에 보낼 수..
1. establish a connection TCP는 reliable한 연결을 지향한다. 따라서 연결을 수립할때도 꽤나 복잡한 과정을 거친다. 기본적으로 생각해볼 수 있는 것이 클라이언트 측에서 연결을 하자고 제안하면, 서버 측에서 이를 승낙하는 2 way-handshake이다. 하지만 이 방식은 특정 메시지가 지연되는 경우 완벽하게 동작하지 않으므로, 완벽을 추구하는 TCP에는 어울리지 않는다. 따라서 TCP에서는 연결을 시작/종료할 때, 이보다 더 확실하고 완벽한 3/4 way-handshake를 사용한다. 2. 연결 시작 (3 way-handshake) 3 way-handshake로 연결을 시작하는 과정은 다음과 같다. 1단계) - 클라이언트가 서버에게 연결을 요청한다. - TCP header의 ..