초심자를 위한 네트워크 설명 (3) 네트워크의 공통언어 TCP/IP

wonsik·2022년 5월 18일
2

컴퓨터 네트워크

목록 보기
3/9
post-thumbnail

ch3. 네트워크의 공통언어 TCP/IP

IP(internet protocol)

역할: 엔드 투 엔드 통신
라우터에서 해석

인터페이스에 IP 주소를 설정한다.
IP 프로토콜은 host의 운영체제에서 동작한다. PC에는 복수의 인터페이스를 탑재할 수 있다. 인터페이스마다 IP주소를 설정할 수 있다. 즉 IP주소는 호스트 자체가 아니라 정확하게는 호스트의 인터페이스를 식별한다.

IP 주소는 32bit로 이루어져 있으며 8비트씩 10진수로 변환하고 .으로 구분하는 도트형 10진 표기방식을 사용한다.
예를 들어 IP주소가 1100 0000 1010 1000 0000 0001 0000 0001 이라면 192.168.1.1로 사용한다.

데이터 전송 목적지 개수

유니캐스트 : 목적지가 1개

완전히 같은 데이터를 복수의 주소로 효율적이게 전송하기 위해 브로드캐스트 멀티캐스트 방식을 사용한다.

브로드캐스트: 같은 네트워크 상의 모든 host에 완전히 똑같은 데이터를 전송한다. IP헤더 목적지 IP 주소에 브로드캐스트 IP주소를 지정하면 같은 네트워크상 모든 호스트에 데이터를 전송할 수 있다.(브로드캐스트 IP주소로 255.255.255.255를 사용한다.)

멀티캐스트: 같은 어플리케이션이 동작하는 등 특정 그룹에 포함되는 호스트에 완전히 똑같은 데이터를 전송한다. IP헤더의 목적지 IP주소에 멀티캐스트 IP주소를 지정하여 사용한다.(멀티캐스트 IP주소로 224.0.0.0 ~ 239.255.255.255를 사용한다.)

서브넷 마스크

IP주소는 네트워크 부와 호스트 부로 구성된다. 이는 가변적으로 이용할 수 있다.
32bit IP주소의 어디까지가 네트워크 부인지 명시한 것이 서브넷 마스크이다.
1은 네트워크 부 0은 호스트 부이다. 즉 1,0이 반복해서 나타나지 않고 연속한 1과 연속한 0으로 이루어져 있다. 이 외에도 IP주소 뒤에 /'연속한 1의 개수'로 표현하기도 한다. 이를 프리픽스 표기라고 한다.

NAT

공인 IP주소와 사설 IP주소는 연결되어있지 않다.

인터넷에서 목적지가 사설 IP주소라면 IP패킷을 폐기한다. 사설IP에서 인터넷으로 데이터를 전송하는 것은 가능하다. 즉 요청은 가능하나 통신과 응답은 불가능하다.
공인 IP주소와 사설 IP주소를 연결하기 위해 NAT을 사용한다.

  1. 사설 네트워크에서 인터넷으로 요청을 전송할 때 출발지 IP주소를 변환한다.
  2. 라우터는 나중에 원래대로 되돌리기 위해 변환한 주소의 대응을 NAT 테이블에 보존한다.
  3. 요청에 대한 응답이 라우터로 돌아오면 목적지 IP주소를 변환한다. 이 때 NAT테이블에 보존해둔 주소의 대응을 이용한다.

사설 IP주소와 공인 IP주소를 1대1로 대응하면 공인 IP주소가 매우 많이 필요하다. 따라서 복수의 사설 IP주소를 1개의 공인 IP주소로 대응하는 주소변환 NAPT(Network Address Port Translation)을 이용한다.

ICMP

IP로 데이터를 전송하면 맞게 도착했는지 확인할 방법이 없다. 목적지에 도달을 못하면 아무리 기달려도 응답하지 않는다. 이를 최선형(best effort)라 부른다. 즉 데이터를 보내기 위해 최선을 다했지만 안되면 어쩔 수 없지라는 것이 IP의 특징이다.

이처럼 엔드 투 엔드 통신이 제대로 이루어졌는지 확인하는 기능을 갖는 프로토콜로 ICMP(Internet Control Message Protocol)가 개발되었다.

ICMP의 기능

  • 에러 리포트
  • 진단 기능

어떠한 이유로 IP패킷을 폐기했다면 이 이유를 ICMP를 이용해 IP패킷의 출발지로 돌아와 에러 리포트를 전송한다. 이를 도달 불능 메시지라고 한다.

진단 기능은 IP의 엔드 투 엔드 통신이 가능한지 확인하는 것이다. 자주 이용하는 명령으로 ping 커맨드가 있다. ping 커맨드로 ICMP에코 요청/응답 메세지를 통해 지정한 IP주소와 통신이 가능한지 확인한다.

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=rbdi3222&logNo=220602423771

ARP

IP패킷은 PC나 서버 등의 인터페이스까지 전송된다.
TCP/IP의 IP주소와 인터페이스를 식별하기 위한 MAC주소를 대응 시키는 것이 ARP의 역할이다.
IP 주소와 MAC 주소를 대응시키는 것을 주소해석이라고 한다.

ARP의 동작 흐름
1. ARP 요청으로 IP주소에 대응하는 MAC주소를 질의한다.
2. 질의받은 IP주소를 가진 호스트가 ARP응답으로 MAC주소를 알려준다.
3. 주소해석한 IP주소와 MAC주소의 대응을 ARP캐시에 보존한다.

포트번호

호스트에서 동작하는 애플리케이션에 데이터를 배분하기 위해선 각각의 애플리케이션을 식별할 수 있어야 한다. 이를 위해 포트번호가 사용된다. 이는 TCP 헤더에 지정되어져 있다. 포트번호는 16bit이다(0~65535)

포트번호 범위

명칭포트 번호 범위의미
웰노운 포트0 ~ 1023서버 애플리케이션용으로 예약된 포트 번호
등록된 포트1024 ~ 49151자주 이용되는 애플리케이션의 서버 쪽 포트 번호
동적/사설 포트49152 ~ 65535클라이너트 애플리케이션용 포트 번호

TCP(Transmission Control Protocol)

신뢰성 있는 애플리케이션간 데이터 전송을 위한 프로토콜

TCP 데이터 전송 절차
1. TCP커넥션 맺기 - 데이터를 송수신하는 애플리케이션 간 통신이 정상적으로 이루어지는지 확인한다. 이를 3웨이 핸드쉐이크라고 한다.

2. 애플리케이션간 데이터 송수신 - 애플리케이션의 데이터 크기가 크면 분할하여 복수의 TCP segment로 전송하고 어떻게 분할했는지 TCP헤더에 기술한다. 목적지에서 차례대로 원본데이터로 조립한다. 데이터가 도착하면 ACK를 통해 수신을 확인한다. 네트워크가 혼잡하면 플로우 제어를 통해 전송속도를 제한한다.
3. TCP커넥션 끊기

  • 시퀀스 번호를 통해 어떻게 데이터를 분할했는지 알 수 있다.

  • ACK번호를 통해 데이터를 빠르게 수신했는지 확인한다.

  • TCP에서 데이터를 분할하는 단위를 MSS(Maximum segment size)라하며 표준 크기는 1460byte이다.

DHCP

IP와 TCP에는 설정할 것들이 많기 때문에 일반 사용자들이 이용할 때 불편한 점이 많다. 따라서 설정을 자동으로해주는 DHCP를 사용한다.

UDP

PC나 서버 등에 도달한 데이터를 적절한 애플리케이션에 배분하는 기능만 있는 프로토콜
TCP처럼 데이터 분할, 목적지 확인과 같은 작업이 불가능하다.

이용사례: 상대방의 애플리케이션이 동작하는지 확인하지 않고 데이터를 보내기 때문에 데이터 전송 효율이 좋다. 반대로 신뢰성이 떨어진다.

DNS

서버에는 사용자가 이해하기 쉬운 호스트명을 붙인다.(예를 들면 URL이나 메일주소) 이를 통해 자동으로 IP주소를 연결한다. 이를 DNS(Domain Name System)이라한다.
호스트명에서 IP주소를 구하는 방법을 이름해석이라고 한다. DNS는 이름해석에서 가장 자주 사용되는 방법이다.

DNS의 이름해석

우선 DNS 서버에 필요한 정보(리소스 레코드: IP주소 뿐만 아니라 별명, 메일 서버 등등)를 바르게 등록한다. DNS 서버는 루트를 정점으로한 계층 구조이다. 클라이언트 호스트에는 DNS 서버의 IP주소를 설정해둔다. 사용자가 서버 호스트 이름을 입력하면 자동으로 DNS server에 대응하는 IP주소를 질의한다. 이 기능은 os에 내정되어 있으며 DNS 리졸버라 부른다.

루트에서부터 찾는다 \rightarrow 여러번 질의를 반복(재귀 질의 - 비효율적)
예를 들면 루트에서 .com경로를 찾고 naver로 도착하여 IP주소를 획득
여러번 질의를 하면 비효율적이기 때문에 캐시에 저장한다.

https://d1.awsstatic.com/Route53/how-route-53-routes-traffic.8d313c7da075c3c7303aaef32e89b5d0b7885e7c.png

profile
새로운 기술을 배우는 것을 좋아하는 엔지니어입니다!

0개의 댓글