Search
Duplicate
🌐

Network에 대한 정리(3)

간단소개
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
네트워크
Scrap
태그
9 more properties

11. 인터넷의 TCP/IP 프로토콜과 패킷 교환 방식

전세계를 연결하는 복잡한 네트워크인 인터넷에서는 엄청난 양의 데이터를 보다 효율적이고 안정적으로 전송하기 위해 패킷 교환 방식으로 데이터를 전송
TCP와 IP는 패킷 교환 방식에 따라 데이터를 전송할 때 사용하는 프로토콜.

네트워크에서 데이터의 전송 방식

네트워크는 노드와 링크로 구성.
데이터의 최초 송신지 또는 최종 수신지 역할을 하는 노드를 호스트, 호스트 사이에 위치한 노드를 중간 노드라고 함.
네트워크는 상호 연결된 노드의 모임으로 구성되며, 중간 노드를 경유하여 송신지 호스트에서 수신지 호스트로 데이터가 전송됨.
송신 호스트에서 수신 호스트까지 가는 다양한 이동 경로 중에 어떤 경로를 선택해서 데이터를 전송할 것인지 결정하는 방법에는 크게 회선 교환 방식패킷 교환 방식이 있음.

회선 교환 방식과 패킷 교환 방식

회선 교환 방식

통신하고자 하는 두 호스트가 데이터를 전송하기 전에 미리 하나의 고정된 이동 경로를 설정하는 방식.
미리 설정된 이동 경로는 두 호스트만이 독점적으로 사용하는 전용 경로가 되며, 통신을 종료할 때까지 변경되지 않기 때문에 모든 데이터가 같은 경로로 전달됨.
어떤 이동 경로가 더 나을지는 데이터를 전송하는 시점의 네트워크 혼잡도 등 여러 요인에 따라 달라지는 데 회선 교환 방식은 미리 이동 경로를 결정하기 때문에 데이터 전송 시의 이동 경로가 효율적이지 못한 경우가 발생.
이미 설정된 이동 경로는 설정이 해제되기 전까지 다른 호스트가 이 이동 경로를 사용할 수 없게 된다는 측면에서도 비효율적
이러한 회선 교환 방식의 비효율성을 개선한 것이 패킷 교환 방식

패킷 교환 방식

미리 고정된 이동 경로를 설정하지 않는 대신 데이터를 패킷이라고 하는 작은 단위로 나누어 전송하는 방식.
데이터는 네트워크를 통해 전송되기 전에 패킷이라는 작은 조각으로 나뉘고, 각 패킷에는 고유 번호가 있어서 네트워크를 거쳐 최종 수신지에 전송되었을 때 원래의 데이터로 재결합됨.
각 패킷은 전송 당시 가장 효율적인 경로를 각자 설정해 최종 수신지까지 이동.
패킷을 수신한 중간 노드가 패킷의 수신지 호스트를 확인, 수신지 호스트까지 가는 다양한 경로 중 그 당시 가장 좋다고 판단되는 경로를 따라 다음 중간 노드로 패킷을 전송하는 기능(라우팅) 수행. → 이러한 라우팅을 수행하는 중간 노드가 바로 라우터.
송신 호스트에서는 네트워크가 사용하는 프로토콜을 사용하여 데이터를 작은 단위로 분할하고, 분할된 데이터 앞에 패킷의 번호, 패킷의 송신지 및 수신지 등 패킷의 전송을 제어하기 위한 정보를 담은 헤더를 붙여 패킷이라는 형태로 변환(캡슐화), 네트워크로 전송
각 패킷들은 서로 독립적인 라우팅 과정을 거쳐 수신 호스트에 도착하기 때문에 패킷마다 전송에 걸리는 시간이 다르고, 순서도 섞임. → 수신지 호스트에서는 패킷이 모두 도착하면 프로토콜을 사용하여 패킷 헤더를 읽고 패킷의 순서를 다시 정리 후 원래의 데이터로 재결합.
패킷 전송 방식을 사용하면 패킷이 전송될 때마다 최적의 경로를 찾아 이동하기 때문에 전송 효율이 높고, 노드와 노드 간의 링크를 다수의 패킷이 공유하기 때문에 회선 교환 방식(링크 독점)보다 효율적.
정보통신 네트워크에서 데이터는 패킷이라는 작은 단위로 분할되어 라우터를 통해 전송되는 것이 기본.

패킷 교환 방식과 TCP/IP의 데이터 단위

패킷은 ‘헤더’와 ‘데이터 조각’이라는 두 부분으로 구성.
패킷의 헤더에 패킷의 송신지와 수신지 등 패킷의 전송을 제어할 수 있는 정보가 담겨있기 때문에 패킷이 송신지와 수신지에서 하나의 단위로 취급되어 전송하는 데이터 단위가 될 수 있음.
각 계층이 데이터를 프로토콜에 따라 처리하고 헤더를 추가한 데이터 단위가 모두 패킷
응용 계층의 메시지, 전송 계층의 세그먼트, 인터넷 계층의 데이터그램(패킷), 네트워크 인터페이스 계층의 프레임이 각 계층에서 패킷을 부르는 이름.
인터넷 계층에서 만들어진 패킷을 데이터그램이라는 이름 대신 그냥 패킷이라고 사용하기도 함.
패킷 전송 방식의 패킷은 데이터를 효율적으로 전송하기 위해 데이터를 작은 조각으로 분할하고 분할된 조각에 헤더를 붙여 캡슐화한 데이터를 의미. 이 패킷을 라우터가 라우팅을 통해 송신 호스트에서 수신 호스트까지 전송하는 것이 패킷 교환 방식.
TCP/IP의 4계층에서 만들어진 데이터 단위가 모두 패킷의 종류이지만, 원본 데이터를 분할하여 전송의 효율성을 꾀하는 패킷 전송방식의 패킷을 만드는 것은 전송 계층의 TCP 프로토콜.
전송 계층에서 만든 데이터 단위 = 세그먼트(segment)
TCP 프로토콜이 데이터를 분할해서 만든 세그먼트를 수신 호스트까지 전송할 수 있는 IP 주소가 IP 데이터그램의 헤더에 담기기 때문에 IP 프로토콜이 만든 데이터그램을 그냥 패킷이라고도 부름.
TCP 프로토콜과 IP 프로토콜이 함께 패킷 교환 방식의 패킷을 만들고 전송하는 규칙을 정함.

TCP 프로토콜과 IP 프로토콜

데이터 전송을 책임지는 하위 3개의 계층 중 네트워크 인터페이스 계층은 LAN 안에서 물리적으로 연결된 네트워크 기기 간의 데이터 전송 담당.
인터넷에서의 데이터 전송을 책임지는 것은 전송 계층과 인터넷 계층.
전송 계층의 TCP 프로토콜과 인터넷 계층의 IP 프로토콜이 패킷 교환 방식을 구현하여 인터넷에서 정확한 목적지까지 효율적인 데이터 전송을 가능하게 하기 때문에 인터넷의 핵심.

송신지 호스트

전송 계층이 전송하려는 메시지를 여러 개의 패킷으로 나누어서 인터넷 계층으로 보냄.
인터넷 계층은 이 패킷(세그먼트)을 수신지 호스트까지 하나씩 전송.
IP 프로토콜을 사용하여 세그먼트에 수신지 호스트의 IP 주소를 담은 IP 헤더를 부착한 패킷을 전송, 중간 노드인 라우터가 IP 주소를 기반으로 한 라우팅을 통해 수신지 호스트까지 전송.

수신지 호스트

인터넷 계층에서 패킷 헤더의 IP 주소를 읽고 자기한테 온 패킷이 맞으면 전송 계층으로 넘김.
전송 계층에서는 세그먼트 헤더의 정보를 읽고 수신한 패킷들을 재결합하여 메시지를 만들고, 메시지를 보낼 애플리케이션을 확인하여 전송.
인터넷 계층에서는 IP 주소로 수신지 호스트까지 패킷을 전송하는 역할을 할 뿐.
모든 패킷이 재결합할 수 있도록 오류나 중복없이 제대로 전송되었는지를 확인하는 역할은 전송 계층.(TCP 프로토콜)
전송 계층은 패킷을 재결합한 메시지가 수신 호스트로 올바르게 전송될 수 있도록 보장하는 역할.
인터넷 계층IP 프로토콜을 사용하여 각 패킷의 전송을 책임지는 반면 전송 계층에서는 TCP 프로토콜을 사용하여 전체 메시지의 전달을 책임짐.
직접 연결된 컴퓨터의 범위를 넘어서 멀리 떨어진 컴퓨터에 데이터를 전송하기 위해서 필요한 계층이 인터넷 계층.
네트워크와 네트워크를 연결해서 네트워크 간에 데이터를 전송하는 역할.
서로 다른 네트워크 간에 데이터를 전송하는 라우터가 인터넷 계층의 역할을 구현하는 핵심 네트워크 장비.

IP 프로토콜

인터넷에서 데이터가 송신지를 출발하여 수신지에 도착하기까지 수많은 라우터를 통과, 그 과정에서 데이터가 길을 잃지 않고 정확한 목적지에 도착할 수 있도록 기능하는 것이 IP 프로토콜
네트워크에 연결된 컴퓨터는 물리적 연결이나 거리에 상관없이 통신이 가능.
IP 프로토콜은 IP 주소(최종 목적지 결정)라우팅(목적지까지 경로 결정)으로 그 기능을 구현

IP 주소

어느 네트워크의 어느 컴퓨터라는 것을 식별하는 주소
네트워크 번호(Network Part)와 컴퓨터 번호(Host Part)를 조합하여 만들어짐.
네트워크 번호는 접속되어 있는 모든 네트워크 중에서, 컴퓨터 번호는 그 컴퓨터가 속한 네트워크 내에서 유일한 번호를 할당하여 중복을 허용하지 않음.
MAC 주소는 장비를 식별하기 위한 주소일뿐 장소를 특정하진 않기 때문에 인터넷 계층에서는 사용하지 않음.
인터넷 계층에서는 네트워크에 접속하고 있는 컴퓨터의 장소를 식별하기 위해 개개의 컴퓨터에 부여하는 IP 주소를 사용.
IP주소는 MAC주소와 달리 컴퓨터가 위치한 장소가 바뀌어 접속하는 네트워크가 변경된 경우 IP 주소도 변경(논리 주소)
IP 주소는 라우팅을 하는 라우터에도 할당.
라우팅 : IP 주소를 기반으로 호스트와 라우터, 라우터와 라우터, 라우터와 호스트의 경계를 넘나들며 링크를 연결하는 과정.
각각의 경계를 인터페이스라고 하며 각 인터페이스가 IP 주소를 갖고 있어야 라우팅을 할 수 있음. → IP 프로토콜은 각 호스트와 라우터의 인터페이스가 IP 주소를 갖도록 요구
라우터는 인터페이스의 개수만큼 IP 주소를 가짐.

라우팅

네트워크 내에서 데이터를 전송할 때 최적의 경로를 선택하는 과정.
하나의 라우터가 결정하는 것은 경로의 일부.
데이터의 최종 목적지인 2번 컴퓨터의 IP 주소를 바탕으로 각각의 라우터는 자신이 알고 있는 경로 중 네트워크 G로 가는 최적의 경로를 찾아 그 경로 상에 있는 가까운 라우터에게 데이터를 전송.

라우팅 테이블

라우팅이 가능한 것은 모든 호스트와 라우터가 라우팅 테이블이라는 경로 정보를 갖고 있기 때문.

IP 프로토콜에 의한 패킷 전송 과정

송신지 인터넷 계층은 수신지 IP 주소와 송신지 IP 주소를 담은 IP 헤더를 추가한 IP 패킷을 만들어 네트워크 인터페이스 계층으로 넘김.
송신지 네트워크 인터페이스 계층에서 프레임으로 변환된 IP 패킷은 인터넷에서 수많은 라우터의 라우팅을 거쳐 수신지 네트워크 인터페이스 계층에 도착.
수신지 네트워크 인터페이스 계층으로부터 IP 패킷을 넘겨받은 수신지 인터넷 계층은 IP 헤더에서 수신지 IP 주소가 자신의 주소와 일치하는지 확인, IP 헤더를 삭제한 데이터(TCP 세그먼트)를 전송 계층으로 넘김

네트워크 인터페이스 계층과 인터넷 계층의 관계

인터넷 계층은 네트워크 인터페이스 계층으로 IP 패킷을 넘기면서 라우팅을 통해 찾아낸 라우터까지 IP 패킷의 물리적인 전송을 의뢰
인터넷 계층이 네트워크 인터페이스 계층에 전송을 의뢰할 떄는 수신지 라우터의 IP 주소가 아닌 MAC 주소가 필요. → 이 때 인터넷 계층에서 IP 주소를 MAC 주소로 변환하는 ARP(Address Resolution Protocol, 아프) 프로토콜이 사용.
ARP 프로토콜에 따라 IP 패킷을 전송할 MAC 주소를 받은 네트워크 인터페이스 계층은 MAC 주소를 이더넷 헤더에 담은 프레임 형태의 패킷을 만들어 라우터로 전송.
라우터는 수신지 IP 주소를 보고 다음에 어느 라우터로 패킷을 전송할 지 결정. 다음 라우터의 MAC 주소를 ARP 프로토콜을 통해 알아내고 이더넷 헤더 교체, 다음 라우터로 전송.
최종 목적지의 IP 주소는 변하지 않지만, 라우팅에 따라 다음 전송지의 MAC 주소는 변경되는 과정 반복. 물리적인 패킷 전송이 이루어짐.
수많은 라우터를 거쳐가면서 프레임은 다음 목적지의 MAC 주소로 계속 교체. 데이터를 최종 목적지까지 전달하기 위해 최적의 경로 상에 있는 라우터를 찾아 다음 전송 목적지로 정하고, 수신지 MAC 주소를 변경해서 데이터를 전송하는 과정을 라우팅이라고 함.

인터넷에서의 패킷 전송

송신 호스트와 연결된 1번 포트로 프레임을 수신한 스위치는 프레임의 수신지 MAC 주소가 라우터 A의 MAC 주소인 것을 확인하고, MAC 테이블을 이용하여 라우터 A와 연결된 2번 포트로 프레임을 전송함.
스위치는 MAC 주소를 읽고 단순히 프레임 전송을 중계하는 역할. MAC 주소도, IP 주소도 할당되지 않음.
반면 라우터는 패킷을 수신하고 수신한 패킷을 전송할 주소를 지정해 송신하는 역할을 하기 떄문에 수신지와 송신지로서 MAC 주소와 IP 주소가 할당됨.
라우터 A는 MAC 주소를 읽고 자기에게 온 프레임인지 확인, IP 헤더에서 수신 호스트의 IP 주소를 읽고 어느 라우터로 전송할지 라우팅, 스위치로부터 받은 프레임의 이더넷 헤더를 버리고, 라우터 B의 MAC 주소(ARP 프로토콜을 통해 변환)를 다음 수신지로 한 새로운 이더넷 헤더를 붙여 라우터 B로 전송.
라우터 B도 같은 방식으로 라우터 C로 전송.
라우터 C는 수신 호스트가 자신과 같은 네트워크 D에 속한 호스트라는 것을 알아 내고 다음 수신지를 수신 호스트로 결정. 수신 호스트의 MAC 주소(ARP 프로토콜)를 이더넷 헤더에 담아 수신 호스트로 패킷을 전달. 이 패킷은 스위치의 3번 포트로 전송되고 4번 포트를 통해 수신 호스트에 도착.
인터넷에 연결된 모든 컴퓨터나 라우터의 IP 주소는 유일해야 함. → 전세계 인터넷 주소를 관리하는 인터넷할당번호관리기관(IANA, Internet Assigned Numbers Autority)에서 통합 관리
IP 프로토콜에서는 현재 IPv4의 주소 체계를 사용 중이지만 IP 주소를 사용하는 기기가 폭발적으로 증가하면서 IPv6가 사용되기 시작.

IPv4

이진수 32자리로 구성.
IPv4로 할당할 수 있는 IP 주소의 개수는 2의 32승(약 43억 개)
IPv6는 128비트로 구성되어 2의 128승 개의 IP 주소를 사용할 수 있음.
IP 주소는 호스트가 속한 네트워크 주소인 네트워크 부와 호스트의 주소인 호스트 부로 구성. 네트워크 부는 어떤 네트워크인지를 나타내 다른 네트워크와 구분하는 역할, 호스트 부는 해당 네트워크의 어느 호스트인지를 나타내 다른 호스트와 구분하는 역할.
네트워크 부는 모든 네트워크 중에서, 호스트 부는 그 호스트가 속한 네트워크 내에서 유일한 번호를 할당.
IP 주소 할당 기관(NIC)에 IP 주소 할당을 신청하면 할당 기관에서는 네트워크 부까지만 할당. 네트워크를 만드는 사람이 호스트 부를 결정하여 IP 주소를 개별 호스트에 설정.
네트워크 부와 호스트 부를 식별하기 위해 서브넷 마스크 방식 사용.

특수 목적을 위한 IP 주소 - 네트워크 주소와 브로드캐스트 주소

호스트 부가 모두 0인 경우와 1인 경우에는 자신의 IP 주소로 사용할 수 없음.
모든 비트가 0인 번호는 네트워크 주소, 모든 비트가 1인 번호는 브로트캐스트 주소라는 특수 목적으로 사용.
네트워크 주소 : 전체 네트워크에서 작은 네트워크를 식별할 때 사용. 호스트 부가 0이면 그 네트워크를 대표하는 주소.
브로드캐스트 주소 : 하나의 네트워크에 있는 모든 호스트에 동시에 데이터를 보낼 때 사용되는 전용 IP 주소.

서브넷팅과 서브넷

IP 주소를 효율적으로 활용하기 위해서 클래스 A와 B 같은 대규모 네트워크를 좀 더 작은 네트워크로 분할하는 것을 서브넷팅이라 하고, 분할된 네트워크를 서브넷이라고 함.
서브 넷팅을 하면 네트워크 부와 호스트 부로 구성되었던 클래스가 네트워크 부, 서브넷 부, 호스트 부로 구성.
서브넷팅이라는 논리적인 방법으로 분할된 네트워크는 라우터에 의해 물리적으로 구별.(서브넷팅 후에는 서브넷이 서로 통신을 하기 위해서는 라우터 필요)
서브넷팅을 하면 네트워크 부가 변경되지만 IP주소만으로는 네트워크 부가 어디까지인지 알 수가 없음. 따라서 이를 식별하기 위해 서브넷마스크를 식별자로 사용.
서브넷 마스크 : IP주소의 네트워크 부와 호스트 부의 경계를 식별하기 위해 만든 숫자.

서브넷 마스크 표기법

1.
십진수 표기법
2.
프리픽스 표기법
서브넷 마스크를 사용하면 1비트 단위로 네트워크 부를 구성할 수 있기 떄문에 더 세분화 된 네트워크를 만들 수 있음.
클래스와 상관없이 한 네트워크에 연결하고 싶은 호스트들의 규모에 맞게 네트워크 부와 호스트 부의 길이를 비트 단위로 유연하게 변경할 수 있는 서브넷 마스크를 사용하여 IP 주소를 할당.-
서브넷 마스크는 반드시 연속한 1과 연속한 0으로 구성.(0과 1이 교대로 나타나지 않음.)
IPv4 주소 체계에서 사용할 수 있는 IP 주소가 부족해지기 시작하자 필요한 곳에 필요한 때에 필요한 수만큼 고유 IP 주소를 할당하기 시작.
24시간 인터넷에 연결되어야 하는 서버는 24시간 내내 IP 주소가 필요하지만, 서비스를 요청하는 클라이언트는 서비스 요청을 위해 인터넷에 접속할 때에만 IP 주소가 필요.
필요한 클라이언트가 필요한 때에 IP 주소를 할당받아 인터넷에 접속할 수 있다면 같은 IP 주소를 접속 시간 별로 나눠 쓸 수 있어 효율적으로 IP 주소를 사용할 수 있음.

공인 IP 주소

인터넷에서 사용하는 IP 주소.

사설 IP 주소

인터넷과 독립적인 사설 네트워크에서 사용하는 IP 주소(사내 네트워크 같은 독립적인 네트워크)
공인 IP 주소는 유일하고 고유하게 할당되어야 하기 때문에 사설 IP 주소와 명확히 구별.
사설 IP 주소로 사용가능한 번호는 클래스 별로 정해져 있음. 사설 네트워크를 만들 때에는 사설 IP 주소로 사용 가능한 번호의 범위 내에서 IP 주소를 자유롭게 선택할 수 있음.
클래스 A : 10.0.0.0 ~ 10.255.255.255
클래스 B : 172.16.0.0 ~ 172.31.255.255
클래스 C : 192.168.0.0 ~ 192.168.255.255
사설 IP 주소와 공인 IP 주소 간에 주소 변환을 하는 NAT 기술의 개발로 사설 IP 주소를 할당한 네트워크 상의 호스트와 공인 IP 주소를 할당한 인터넷상의 호스트 간에 통신이 가능해짐.

NAT

NAT(Network Address Translation) : 사설 IP 주소와 공인 IP 주소 간에 주소 변환을 해 사설 네트워크에서 인터넷으로 통신이 가능하게 함. 주로 라우터에 의해 구현.
사설 IP 주소가 설정된 컴퓨터가 인터넷과 통신하고 싶은 경우에는 NAT 기술이 구현된 라우터를 연결하여 통신하면 됨.
이 때 라우터는 사설 네트워크에서 인터넷으로 들어가는 일종의 게이트웨이 역할. 기본 게이트웨이라는 의미에서 호스트 부가 1인 IP 주소를 할당.

패킷 전송 과정

클라이언트가 전송한 IP 패킷이 NAT 지원 라우터에 도착하면 송신지 사설 IP 주소를 공인 IP 주소로 변환.
IP 헤더의 송신지 주소를 변경한 IP 패킷을 인터넷으로 전송.(라우터에는 변환 전후의 주소를 기록한 NAT 테이블이 만들어짐)
서버가 클라이언트에게 서비스를 제공하는 IP 패킷을 보낼 때는 반대로 공인 IP 주소가 사설 IP 주소로 변환.(NAT 테이블 이용)
변환된 IP 헤더의 수신지에 따라 클라이언트로 IP 패킷 전송.
인터넷에서는 사설 네트워크에 있는 호스트들을 대신해 NAT 라우터가 사실상 하나의 공인 IP 주소를 갖는 하나의 호스트 역할.
사설 네트워크의 호스트들이 하나의 공인 IP 주소를 공유하면서 인터넷으로의 통신을 할 수 있음.
집이나 학교, 기업 내에서는 사설 IP 주소를 설정하고 인터넷과 연결하는 NAT 라우터와 인터넷에 공개된 서버에만 공인 IP 주소를 설정함으로써 부족한 IP 주소의 문제에 대응.

고정 IP와 유동 IP

고정 IP

호스트에 IP 주소를 부여할 때 고정적으로 하나의 번호를 할당해 지속적으로 사용하는 방식. 고정 IP를 사용하면 네트워크에 연결된 호스트의 수만큼 IP 주소 필요.

유동 IP

인터넷에 접속할 때마다 별도로 IP 주소를 부여받는 방식.
네트워크에 연결되어 있는 호스트보다 적은 수의 IP 주소로 운영 가능.
인터넷에 접속하는 호스트에게 IP 주소를 할당하고, 접속이 끝나면 다시 반납하여 다른 호스트에게 할당 가능.
일반적으로 서버는 공인 IP 주소를 고정적으로 할당받아 사용.
서버 외에 필요할 때 인터넷에 접속하는 클라이언트 같은 호스트는 유동 IP를 사용하는 것이 효율적.
사설 IP 주소가 할당된 호스트가 인터넷에 접속할 때 NAT에 의해 변환되는 공인 IP 주소도 유동 IP 방식 사용.
인터넷이 상용화되어 사용자가 ISP(인터넷 서비스 제공자)를 통해 인터넷 서비스를 이용하게 되면서 IP 주소 관리기관이 ISP에 공인 IP 주소를 할당하고 ISP가 사용자에게 공인 IP 주소를 부여.
사용자가 서버용으로 고정 IP를 신청하지 않는 이상 ISP는 인터넷 서비스 사용자에게 유동 IP 할당.
인터넷 공유기로 연결된 컴퓨터들은 인터넷 공유기의 IP 자동 설정 기능에 의해 네트워크 부가 192.168.X인 IP 주소 할당.
유동 IP 주소를 사용하는 컴퓨터는 IP 주소를 별도로 설정하지 않고 필요할 때마다 임대받은 IP 주소로 자동 설정.
하지만 인터넷에서 서비스를 제공하는 서버를 운영하기 위해선 고정된 공인 IP 주소 필요. 많은 사람이 접속하는 서버의 경우 IP 주소가 바뀌면 서버 접속이 불가능해지기 때문에 자동 IP 주소 설정을 하지않고 할당받은 공인 IP 주소를 서버에 수동 설정.

IPv6

IPv6는 128비트를 사용하기 때문에 2의 128승 개의 주소를 할당 가능.
전체 128비트를 16비트씩 8그룹으로 나누어 각 그룹을 16진수로 변환하고, 그룹의 경계를 ‘:’으로 구분하는 형식으로 표기
IPv6에서는 IP 주소 공간 확장뿐만 아니라 IPv4의 단점을 보완하여 클래스와 사설 IP 주소 및 NAT을 사용하지 않고 모든 호스트에 자동으로 공인 IP를 할당하여 보다 간단하게 주소 설정 가능.
IPv4와 IPv6 기반 네트워크는 서로 호환되지 않아 IP 패킷을 전송할 수 없음. 따라서 인터넷 상의 모든 네트워크를 IPv4에서 IPv6로 전환하는 작업을 해야하기 때문에 전환되기까지 오랜 시간이 걸릴 것으로 예상.(두 네트워크간 IP 패킷 전송이 가능하도록 두 주소 체계가 공존할 수 있는 전환기술을 사용해 점진적인 전환을 꾀하고 있음.)
인터넷에서 구글이나 네이버가 제공하는 웹 서비스를 이용할 수 있는 것은 구글이나 네이버가 만든 웹 서버에 누구나 접속할 수 있도록 웹 서버의 공인 IP 주소를 인터넷에 공개했기 때문.
이 때 구글이나 네이버가 인터넷에 공개한 IP 주소 대신 사용하는 영문 주소를 도메인(또는 도메인 이름, 호스트 네임)이라고 함.
도메인 : 숫자 형태의 IP 주소를 사람이 기억하기 쉬운 문자로 표현한 주소.

1) DNS(Domain Name System)

도메인과 IP 주소를 저장해 놓은 시스템.
전 세계의 IP 주소에 대응하는 도메인을 효율적으로 관리하기 위해 개발된 시스템.
DNS 서버 : IP 주소와 도메인을 저장하고 맵핑하는 일종의 데이터베이스. IP 주소를 도메인으로 변환하거나 도메인을 IP 주소로 변환하는 DNS 서비스 제공.
DNS 서버에 IP 주소를 질의하기 위해서는 DNS 서버의 IP 주소를 내 컴퓨터가 알고 있어야함. 보통은 ISP에서 기본적으로 제공하는 DNS 서버의 IP 주소가 내 컴퓨터에 설정되어 있음.

2) 도메인의 계층 구조

도메인 규칙

숫자와 영문자의 조합으로 구성되어야 함.
특수문자 사용할 수 없음.
256자 이상의 도메인 이름은 등록불가.
이미 등록된 도메인은 사용 불가.
도메인 이름은 몇 개의 짧은 영문자를 ‘.’으로 연결한 계층 구조를 가지고 있음.(역트리(inverted tree) 구조)
1단계 도메인 : 국가를 나타내는 국가코드 도메인이나 등록인의 목적에 따라 사용되는 일반 도메인
2단계 도메인 : 조직의 속성을 구분.(co(영리기업), go(정부기관), ac(대학)…)
3단계 도메인 : 조직이나 서비스의 이름을 나타내는 도메인 이름. 도메인 사용자가 원하는 문자열을 사용할 수 있음.
도메인은 도메인 계층 구조를 반영한 네임서버(DNS서버)에 저장, 관리됨.
상위 계층의 네임 서버는 하위 계층의 도메인에 대한 정보를 관리하고 하위 계층 네임 서버의 IP 주소를 갖고있음. 최상위 계층인 루트 네임 서버의 IP 주소는 모든 DNS 서버가 등록, 관리.
전 세계의 도메인을 효율적으로 관리하기 위해 도메인을 계층화하고, 계층의 일부 영역을 네임 서버가 분산 관리하는 시스템으로 설계, 운영

3)

도메인의 트리 구조를 따라 순서대로 IP 주소를 찾아가는 과정을 반복하는 것은 효율적이지 않기 때문에 DNS 서버는 질의한 정보를 한동안 캐시에 저장하여 같은 질의가 들어오면 바로 IP 주소를 알려줌.
ISP가 IP 주소 할당을 대행하듯이 도메인 등록도 대행업체가 대행.(가비아, 후이즈 등)
IP 프로토콜은 통신하는 호스트 간에 패킷을 전달하기 위해 최선의 노력을 하지만 패킷의 전송 순서나 완전성을 보장하지 않음.(비신뢰형 서비스)
패킷이 전송 과정에서 아무 문제 없이 제대로 수신지 컴퓨터에 도착할 수 있도록 패킷 전송을 제어하는 역할은 전송 계층이 담당.

전송 계층

네트워크 혼잡 상황에 따라 패킷의 전송량을 조절하여 패킷의 흐름을 제어하고 패킷 전송의 오류를 점검해서 수신지 컴퓨터까지 패킷이 제대로 도착했는지 확인하는 역할 수행.(신뢰할 수 있는 데이터 전송)
애플리케이션이라는 최종 목적지까지 데이터 전송을 책임짐.
다양한 애플리케이션이 동작하는 컴퓨터 내에서 어떤 애플리케이션이 사용하는 데이터인지 식별하여 수신지 컴퓨터에 도착한 데이터를 수신지 컴퓨터 내의 애플리케이션에 배분하는 역할.
전송 계층에서는 애플리케이션을 식별하기 위해 포트 번호 사용.
컴퓨터 내에 동작하는 다양한 애플리케이션들이 동시에 송수신하는 데이터를 구별하기 위해 전송계층에서는 애플리케이션마다 가상의 연결 통로를 만들어 데이터를 전송.
통신하고자 하는 애플리케이션 간에 가상의 연결 통로를 만드는 작업을 연결 확립이라고 하고 애플리케이션과 연결 통로의 인터페이스를 포트라고 하며 포트를 식별하기 위한 주소를 포트 번호라고 함.
포트 번호는 동일한 컴퓨터 안에서 통신을 하고 있는 애플리케이션을 식별할 때 사용하는 애플리케이션의 주소.
세그먼트의 헤더에 송신 애플리케이션과 수신 애플리케이션의 포트 번호 정보가 담겨있기 때문에 어떤 애플리케이션이 사용할 데이터인지 구분하고 데이터를 배분할 수 있음.

포트 번호의 종류

16비트를 사용하는 포트 번호는 0~65535번까지 65536개의 번호를 사용할 수 있음. ICANN은 포트 번호를 세 종류로 구분.
서버 애플리케이션은 정해진 포트 번호를 할당하지만 클라이언트 애플리케이션은 정해진 포트 없이 포트 번호가 필요할 때마다 동적으로 할당.
웰노운 포트와 등록된 포트가 서버 애플리케이션에 할당된 포트이고, 동적 포트가 클라이언트 애플리케이션에 할당.

웰 노운 포트

HTTP(웹), FTP(파일 전송), SMTP(이메일 전송) 등과 같이 인터넷에서 널리 사용되는 서버 애플리케이션이 사용하도록 예약된 번호.(HTTP = 80)
웹 페이지의 포트 번호를 80번이 아닌 다른 번호로 할당하면 해당 포트 번호를 아는 사람만이 웹 페이지에 접속할 수 있음.

등록된 포트

웰 노운 포트 번호 이외에 자주 이용되는 서버 애플리케이션을 식별하기 위한 포트 번호.(1024 ~ 49151)

동적 포트

클라이언트 애플리케이션이 포트 번호가 필요할 때 할당할 수 있도록 배정된 번호. 자신의 포트 번호를 미리 결정하지 않고, 운영체제에 의해 포트 번호가 필요할 때마다 자동으로 할당.(49152 ~ 65535)
서로 다른 데이터가 오고 가는 상황에서도 애플리케이션끼리 혼선이 생기지 않는 것은 전송 계층이 포트를 여러 개 사용하여 각각 따로 통신을 하기 때문.
포트는 데이터가 전송 계층과 응용 계층 사이를 이동할 수 있는 출입구 역할. (ex. 웹 브라우저는 포트 번호가 80번인 통로로만 데이터를 보낼 수 있고, FTP 애플리케이션은 포트 번호가 21번인 통로로만 데이터를 보낼 수 있음.)
응용 계층과 전송 계층이 같은 포트를 사용해야 통신이 가능하기 때문에 전송 계층에서는 포트를 여러 개 사용하여 응용 계층의 애플리케이션들과 각각 따로 통신을 하며 데이터를 전송.

IP 주소와 포트 번호의 조합으로 상대방 식별

한 호스트에서 같은 웹 브라우저 창을 2개를 열었을 때, IP 주소는 같지만 클라이언트 포트번호(송신지 포트번호)가 다르기 때문에 구분 가능.
다른 호스트에서 서버와 통신할 때(클라이언트의 포트 번호는 랜덤하게 할당되기 때문에 같은 포트 번호가 할당될 수 있음.) → IP 주소가 다르기 때문에 구분 가능.
송수신 IP 주소 + 송수신 포트 번호를 보고 혼선없이 통신 가능.
웹 브라우저에서 웹 서버에 접속할 때 IP 주소나 도메인 뒤에 포트 번호를 입력하지 않아도 자동으로 80번이 입력됨. 만약 포트 번호가 80번이 아닌 웹페이지에 접속하려면 웹 브라우저에 주소를 입력할 때 포트 번호도 같이 입력해야 함.
웹 브라우저가 웹 서버 애플리케이션에 접속할 때 웹 브라우저가 설치된 운영체제에서 웹 브라우저가 사용할 포트 번호를 임의로 할당. 웹 서버 애플리케이션은 이 포트 번호로 웹 브라우저와 통신.

전송 계층의 통신 방식과 프로토콜

신뢰할 수 있고 정확한 데이터를 전달하는 통신을 연결형 통신이라 하고, 효율적으로 데이터를 전송하는 통신을 비연결형 통신이라고 함.
연결형 통신은 데이터 전송 시 여러 번의 확인 절차를 거치지만 비연결형 통신은 일방적으로 데이터를 전송.
전송 계층의 연결형 통신에는 TCP 프로토콜이 사용되고, 비연결형 통신에는 UDP 프로토콜이 사용.