[netwhat] 개념 공부

kihkim·2021년 1월 10일
0

42seoul

목록 보기
1/5

1.IP란?(What is an IP address)

  • 네트워크에서 컴퓨터를 구별하기 위한 고유 번호라고 생각한다.
  • IP주소는 네트워크 영역호스트 영역으로 나뉘어져 있다.

2.IP주소 클래스.

  • IP주소에서 IP가 수용할 수 있는
  • A,B,C,D,E 총 5가지로 나뉘어져 있다.


이미지 출처: (https://eliez3r.github.io/)과 한국인터넷정보센터.

네트워크 영역, 호스트 영역

  • 위 사진을 예로 들어보자.
    A클래스는 네트워크 영역이 0~127이고, 호스트 영역은 0.0.0~255.255.255이다.
    123.111.222.255라는 주소가 있으면, 가장 앞에 있는 123이 네트워크 영역, 뒤에 있는 111.222.255가 호스트 영역이 된다.

  • 일반 PC에서 쓰이는 C클래스.
    현재 내 컴퓨터의 IP 주소는 192.168.219.100이다.
    여기서 네트워크 영역은 192.168.219, 호스트 영역은 100이다.

클래스마다 수용할 수 있는 크기가 다른 이유.

  • A클래스는 제작할 수 있는 네트워크 가짓수는 적지만, 그 대신 호스트는 많이 생산할 수 있다.

  • 네트워크 가짓수가 적다는 것은 희귀하다는 의미로, 덕분에 A클래스는 정부 같은 중요 기관에서 사용하는 네트워크가 되었다.

  • 호스트 주소는 A Class(FIRST)가 가장 많다.

  • What is the default IP address class available? 의 답이 C클래스인 이유.
    보통 사용자의 IP주소가 192.168로 시작하니까 C클래스가 아닌가 싶다;;; (실제로 ipconfig치면 윈도우 유저는 192.168.xxx.xxx의 IP 주소를 가진다.)

  • 요즘은 IP를 클래스로 구분하지 않고, CIDR을 사용해 구분한다.

추가내용.

  • 클래스별 네트워크 영역과 호스트 영역 구분.
    A클래스는 10.x.x.x
    B클래스는 128.255.x.x
    C클래스는 192.168.200.x
    여기서 숫자는 네트워크 영역, x는 호스트 영역이다.
  • 클래스별 기본 서브넷 마스크.
    A클래스 : 255.0.0.0
    B클래스 : 255.255.0.0
    C클래스 : 255.255.255.0
    서브넷 마스크는 네트워크 영역을 따라가므로, 각 기본 서브넷 마스크도 위처럼 다르다.

추가내용.

  • IPV4, IPV6

  • ipv4는 32bits다.
    즉, 32비트로 이루어져 있다는 것.
    0000 0000 | 0000 0000 | 0000 0000 | 0000 0000이런 형식이다.
    위 숫자로 구할 수 있는 가짓수는 2의 32승. (4,294,967,296)

  • ipv6는 128bits다.
    즉, 128비트이지만, 자릿수는 ipv4와 똑같다.
    그래도 표현 가짓수는 훨신 많은데, 그 이유는 알파벳을 이용하셔 (0~15)까지 표현하기 때문.
    2001:230:abcd:ffff:0000:0000:ffff:1111
    가짓수는 2의 128승. (340,282,366,920,938,463,463,374,607,431,768,211,456개, 사용하는 입장에선 무한하다고 봐도 무방하다.)

3.CIDR이란?

  • Classless Inter-Domain Routing로 번역하면 클래스없는 도메인 간 라우팅이다.
  • 클래스로 구분하는 게 아니라, 비트로 구분한다.
  • 덕분에 위에서 말한 (A~E)클래스 구분법 보다 더 정확하게 구분지을 수 있다.
  • 그냥 IP주소 뒤에 (서브넷 마스크의)비트 수가 붙는 표기법(형식)라고 생각하자.
  • 보통 IP: 143.7.65.128
  • CIDR IP: 143.7.65.128/23

4.공인 IP와 사설 IP

공인 IP(public ip)

  • 공인된 할당기관(ICANN, 한국인터넷진흥원 등)에서 부여한 IP주소.

사설 IP(private ip)

  • 공인 IP에서 받은 네트워크 자원을 쪼개서 각 가정의 컴퓨터로 보낸다.
  • 이때, 자원을 부여받은 컴퓨터는 IP를 부여받는데, 이것이 사설 IP이다.
  • 사설 IP는 공인 IP와 다르게 눈으로만 보고도, 이게 사설 IP인지 구분할 수 있다.
    (10.x.x.x(A클래스), 172.16.x.x ~ 172.31.x.x(B클래스), 192.168.x.x(C클래스)로 시작하는 것들은 모두 사설 IP.)

5.서브네팅

  • 네트워크 자원을 효율적으로 사용하기 위해 네트워크 자원을 분할하는 것.
  • 주로 서브넷마스크를 사용해 분할한다.

6.넷마스크(What is a Netmask)

  • 요즘은 넷마스크라고 부르지 않고, 서브넷 마스크라고 부른다.
  • 넷마스크는 위에서 말한 옛날 방식 클래스 구분(A, B, C, D, E) 방식에서 사용되는 것이다.
  • 요즘에는 CIDR 방식을 사용하므로, 서브넷마스크를 사용한다.

7.서브넷마스크(What is the subnet of an IP with Netmask)

  • 255.255.255.255이런 형식이 서브넷 마스크이다.
  • 이걸 비트로 치환하면 32가 된다. (255 하나당 8비트)
  • cmd를 치고 ipconfig를 치면 IP주소가 나오지만, 그 밑에 서브넷 마스크도 나오는 것을 볼 수 있다.
    물론 사용자 입장에서는 딱히 서브넷 마스크를 사용할 수 없다.
    이건 어디까지나 이미 구분되고 나서 받은 번호일 뿐이니까.

7-1.CIDR에서의 서브넷마스크

  • 192.168.1.1/17을 예시로 들어보자.
    이 IP는 이미 서브네팅을 한 이후, 받은 IP다.
  • 여기서 /17이 서브넷마스크다.
  • 비트 형식의 서브넷마스크 17을 기본 형식으로 바꾸면, 255.255.128.0이 된다.
  • 255.255.128.0을 2진법으로 바꾸면
    1111 1111 | 1111 1111 | 1000 0000 | 0000 0000이 된다.
    우리는 여기서 2진법으로 바꿨을 떄, '1'의 개수를 비트수로 본다는 것을 알 수 있다.
    이건 다른 사람이 정리해 둔 것이 많으니 패스.

7-2.네트워크 주소.

  • 서브네팅을 하고 얻은 주소는 네트워크 주소호스트 주소가 공존한다.
  • <네트워크 주소 구하기>
  • IP주소와 서브넷 마스크를 AND 연산하면 네트워크 주소가 나온다.
  • 예시) 107.212.146.212/25일 경우, 네트워크 주소를 구하라.

내주소: 0110 1011 | 1101 0010 | 1001 0010 | 1101 0100
서브넷: 1111 1111 | 1111 1111 | 1111 1111 | 1000 0000 (AND)
결과요: 0110 1011 | 1101 0010 | 1001 0010 | 1000 0000
=> 107.212.146.128 (네트워크 주소)

  • <최대 호스트 개수 구하기.>

  • 공식: 2^(32 - (비트수)) - 2

  • 최대 호스트 개수 2^(32 - 17) - 2 = (2^15) - 2 = 32768 - 2 = 32766

  • netwhat문제에서는 딱히 호스트 주소(자신의 IP)를 구하는 문제는 나오지 않는다.

  • 나오는 계산 문제는, 자신의 IP주소를 이용하여 네트워크 주소, 브로드캐스트 주소, 최대 호스트 개수, 호스트 주소 범위를 구하는 문제가 많이 나온다.

7-3.브로드캐스트 주소

  • 브로드캐스트: 네트워크의 특별한 주소. (대부분 주소의 마지막이 255이다.)

  • 네트워크 내부에 있는 일반 사용자(호스트)들은 사용하지 못한다.

  • 이것은 거의 관리자만 사용할 수 있는 주소라도 봐도 무방하며, 이 주소로 데이터를 전달할 시, 브로드캐스트가 속한 네트워크의 호스트 모두에게도 전달, 즉 공개 방송이 된다.

  • 관리자 전용이기에 호스트 주소 범위를 구할 때, 이 주소를 빼는 것이다. (브로드캐스트 - 1)

  • 브로드 캐스트 주소 구하기.

  • 네트워크 주소를 구하고, 네트워크 주소와 반전된 서브넷 마스크를 OR 연산 하면 된다.

ex) 51.254.122.100/24일 경우, 브로드캐스트 주소를 구하라.

내주소: 0011 0011 | 1111 1110 | 0111 1010 | 0000 0000
서브넷: 1111 1111 | 1111 1111 | 1111 1111 | 0000 0000 (AND)
결과요: 0011 0011 | 1111 1110 | 0111 1010 | 0000 0000
=> 51.254.122.0 (네트워크 주소)

내주소: 0011 0011 | 1111 1110 | 0111 1010 | 0000 0000
반전넷: 0000 0000 | 0000 0000 | 0000 0000 | 1111 1111 (OR)
결과요: 0011 0011 | 1111 1110 | 0111 1010 | 1111 1111
=> 51.254.122.255 (브로드 캐스트 주소.)

7-4 호스트 주소 범위 구하기

  • MIN 값은 네트워크 주소의 +1.
  • MAX 값은 브로드캐스트 주소의 -1.
  • EX)165.132.120.10/22의 호스트 주소 범위를 구하라.
    위 IP는 네트워크 주소가 165.132.120.0이고, 브로드캐스트 주소가 165.132.123.255이다.
  • 그리고 네트워크 주소와 브로드캐스트 주소 사이에 사용자들, 즉 호스트들이 들어가는 것이다.
    그래서 호스트 주소 범위는 165.132.120.1 - 165.132.123.254가 된다.

7-5 정리.

  • 그러니까 한 개의 네트워크를 서브넷 마스크를 이용해 여러개로 쪼갠다.
  • 분할하는 이유는 네트워크 자원을 효율적으로 사용하기 위해.
  • 네트워크 주소는 분할된 네트워크들을 하나로 통칭하는 주소이다.
  • 반면 브로드캐스트 주소는 네트워크에 속하는 호스트들을 통칭하는 주소이다.
  • [정보] 호스트는 컴퓨터의 일련번호를 뜻함.
  • 한 마디로 네트워크를 분할시켰는데, 너무 많이 쪼개져서 하나하나 통제하기 어려우니까, 네트워크 주소와, 브로드캐스트 주소 이 두가지로 통제하는 거라고 이해하면 되나?

7-6 재정리.

  • 위에 있는 비트 연산을 이용한 계산은 좀 복잡하다.
  • 아래 계산은 더 편할지도...

네트워크 주소 구하기.

  • 107.212.146.212/25를 예로 들어보자.

  • 여기서 서브넷 마스크 비트는 25비트, 즉 IP 주소의 3블럭을 차지하고도 추가로 1비트를 더 가진다.

  • 그러면 네트워크 범위는 107.212.146.128이다.

  • 어째서 냐면 앞에서 3블럭은 고정이다. (107.212.146.xxx 가 고정.)
    여기서 말하는 고정은 그 값을 바꾸지 않는다는 의미.

  • 남은 1비트 마저 고정하면, 그 값은 128이다. (1000 0000 = 128)

  • 그렇기에 네트워크 범위는 107.212.146.128.

  • 그냥 고정되지 않는 값을 모두 0으로 바꾸면 네트워크 주소.

브로드 캐스트 주소 구하기.

  • 브로드 캐스트 주소는 네트워크 주소에서 고정된 값을 제외한 값들을 1로 바꾸면 나온다.

  • 네트워크 주소: 107.212.146.128
    앞에 고정된 3블럭 말고, 마지막 1비트가 포함된 그 블럭만 반전.
    본래: 0110 1011 | 1101 0100 | 1001 0010 | 1000 0000 (107.212.146.128)
    반전: 0110 1011 | 1101 0100 | 1001 0010 | 1111 1111 (107.212.146.255)

  • OR 연산 결과: 107.212.146.255 (브로드 캐스트 주소)

  • 그냥 고정되지 않는 값을 모두 1로 바꾸면 브로드캐스트 주소.

호스트 범위 구하기.

  • MIN 값은 네트워크 주소의 +1.
  • MAX 값은 브로드캐스트 주소의 -1.
  • 네트워크 주소: 107.212.146.128
  • 브로드 캐스트 주소: 107.212.146.255
  • 호스트 주소 범위: 107.212.146.129 ~ 107.212.146.254

최대 호스트 개수.

  • 정말 간단하다.
  • 2 ^ (32 - 서브넷 마스크 비트수) - 2
  • 현재 서브넷 마스크 비트는 /25다.
  • 2 ^ (32 - 25)는 2의 7승, 즉 128.
  • 128 - 2 = 126이 최대 호스트 개수.

8.OSI 모델(What is the OSI model)

1.설명

  • OSI 모형(Open Systems Interconnection Reference Model)은 국제표준화기구(ISO)에서 개발한 모델로, 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 것이다. 일반적으로 OSI 7 계층이라고 한다.
  • 대부분의 네트워크 장비나 소프트웨어는 이 모델로 설명이 가능하다.
  • 대부분의 네트워크는 이 모델을 참조해 만들었다.
  • 물론 이 OSI 모델을 참조하지 않고 만들어도 되지만, 그 경우엔 일반 네트워크와 통신이 안 될 수 있다.

2.특징

앞에서 OSI모델을 '계층'이라고도 설명했다.
이것은 실버가 다이아를 가기 위해서 골드와 플래티넘을 거쳐야 하는 것처럼, OSI 모델도 상위 모델로 가기 위해선, 그 아래 계층들을 거쳐야 한다.

이름계층역할
응용 계층(Application layer)7아래의 모든 계층을 하나의 어플(Application)로 완성
표현 계층(Presentation layer)6데이터의 암호화, 번역 담당
세션 계층(Session layer)5동시 송수신 방식(duplex), 반이중 방식(half-duplex), 전이중 방식(Full Duplex)같은 통신 방식 회선생성, 유지, 종료
전송 계층(Transport layer)4포트 번호 부착(보내는 이, 받는 이 표시)
네트워크 계층(Network layer)3최종 목적지와 지나쳐야할 경유지 설정(경로 설정)
데이터 링크 계층(Datalink layer)2프레임에 주소부여(MAC - 물리적주소), 에러검출/재전송/흐름제어
물리 계층(Physical layer)1물리적인 연결을 통한 데이터 전송

3. 예시.

  • 이렇게만 말하면 감이 안 잡히고 헷갈리니까 예시를 들어보자.

  • 우선 높은 계층에 도달하기 위해선 낮은 계층부터 차례대로 올라가야 하므로, 가장 아래인 물리 계층 부터.
    우선 사용자가 상대방에게 이메일을 보낸다고 가정하자.

  • 7 응용 계층(Application Layer): 사용자가 데이터를 직접 입력할 수 있게 한다.
    사용자가 네이버 이메일을 통해 받는이, 내용등을 적는다.
    이 경우, 네이버HTTP, Chrome브라우저, 모니터 등이 응용계층에 속한다.

  • 6 표현 계층(Presentation Layer): 데이터를 다른 형태로 변환하는 것.
    사용자가 입력한 받는이 주소, 내용, 보내는 이 등 정보를 컴퓨터 언어로 바꾼다.
    컴퓨터 언어로 바꿔야 전송이 가능하니까. (컴퓨터 언어는 0, 1로 이루어져 있다.)

  • 5 세션 계층(Session Layer) : 각 장치 사이의 연결선을 담당.
    장치 사이 이어진 연결선의 생성, 관리, 폐기를 담당.
    장치끼리 통신할 때, 양방향, 단방향, 일방통행으로 할 건지 결정.

  • 4 전송 계층(Transport Layer): 어떠한 방식으로 연결할 건지 결정.(TCP,UDP)
    속도가 빠른 UDP를 사용할 건지, 속도는 느리지만 안전한 TCP를 사용할 지.

  • 3 네트워크 계층: 경로, 도착지 주소 등을 설정.(IP)
    이 메일을 Alex에게 보내야 하는데, Alex의 네트워크 주소는 alex32@naver.com(192.168.0.3)이야.

  • 2 데이터 링크 계층:
    Alex가 사용하는 네트워크 주소도 알고, 메일의 내용도 모두 안다.
    그런데 Alex가 알려준 네트워크에는 Alex라는 호스트만 있는 게 아니다.
    다른 사람들도 같은 네트워크를 사용한다.
    그래서 네트워크 내부에서 호스트 끼리 구분하기 위해 MAC주소를 사용한다.
    MAC주소는 네트워크랑은 관련없는 기기 전용 고유 ID다.
    이걸로 ALEX의 PC의 정확한 주소를 알았다.

  • 1 물리 계층:
    이제 ALEX의 네트워크 주소, 기기 주소, 메일 내용 모든 것을 알았다.
    이제 정보를 보내자.
    데이터가 랜선을 지날 때, 데이터는 0, 1로 이루어진 전기적 신호로 변해 나간다.

  • 결말.
    데이터는 사용자의 PC의 랜선을 통해 정보가 거대한 바다, 네트워크로 흘러나간다.
    흘러나간 데이터는 목적지를 향해 쭉쭉 나아가, AlEX에게 정보를 성공적으로 전달.

9.TCP와 UDP

  • TCP와 UDP는 OSI모델 중, 전송 계층에 속하는 포로토콜이다.
  • 1970년 최초의 민간 네트워크라고 부를 수 있는 알파넷이 도입되었다.
  • 하지만 이후 다양한 종류의 컴퓨터가 개발되면서 기존 알파넷의 프로토콜 보다 더 높은 방식의 필요함을 느꼈고, 그렇게 개발된 것이 TCP이다.

TCP(전송 제어 프로토콜)

  • 인터넷상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜
  • OSI 모형에서 4번째 계층인 전송 계층(Transport Layer)에서 사용하는 규약
  • 데이터 단위는 세그먼트(Segment).

TCP의 특징.

  • 연결 지향 프로토콜(connection oriented protocol)
    TCP는 데이터를 보내기 전에, 반드시 SYN 연결을 해야 한다.
    1) 상대에게 통신을 하고 싶다는 메시지를 보낸다. (SYN)
    2) 상대는 그 메시지에 대한 응답 + 나도 통신 준비가 되었다는 메시지를 보낸다. (SYN-ACK)
    3) 2번에서 받은 메시지에 응답을 보낸다. (ACK)
    즉, 상대방과의 서버가 연결된 상태에서만 데이터를 보낼 수 있다는 의미.
    이는 데이터의 정확도와 안정성을 확보해주지만, 동시에 번거로운 절차 때문에 속도가 느리다.
    반드시 연결된 상태에서만 데이터를 전송하기에 TCP는 connection oriented protocol(연결 지향 프로토콜)이다.

  • 흐름 제어
    데이터를 보낼 때, 많은 양을 한꺼번에 보내지는 못 한다.
    보통 데이터를 여러 개로 분할해서 전달하는 형식.
    이때, 작게 나뉘어진 데이터 조각을 패킷(packet)이라고 한다.
    TCP는 분할한 데이터 하나하나에 고유번호를 지정한다.
    덕분에 상대방은 얼마 만큼의 데이터를 원하는지, 또는 자신이 얼마 만큼의 데이터를 보낼 지 설정할 수 있다.
    이 고유 번호를 이용하면 데이터의 목적지주소, 확인응답, 오류검출및복원, 실제데이터 기능을 사용할 수 있다.

  • 확인응답: 데이터를 보내면 상대방에게서 몆 번 데이터를 성공적으로 받았다는 답장이 온다.
    이러한 매커니즘이 데이터 조각 하나하나마다 있기에 신뢰도가 높다.

  • 오류 검출 밎 복원: 1번 부터 5번까지 데이터를 전달했는데, 사고로 인해 3번 데이터가 도착을 못하면, 4번과 5번은 전달되지 못 한다.
    그러면 사용자는 3번 데이터 부분에서 문제가 있음을 깨닫고 이를 고치거나, 다시 재전송을 할 수 있다.

  • 데이터 시퀸싱(순차적 전달): TCP는 데이터를 차례대로 전달한다.
    데이터 마다 고유번호가 있고 그것을 작은 순부터 차례대로 보낸다.
    받는 이는 데이터를 차례대로 받을 수밖에 없다.

  • 혼잡 제어
    TCP를 사용하는 인원이 많아지고, 안 그래도 느린 TCP 특성과 겹쳐서, 데이터가 막히는 사고가 빈번이 발생했다.
    데이터를 보내는 사람은 데이터를 보냈는데, 받았다는 답장이 안 오니 계속해서 신호를 보내고, 이게 쌓여서 더욱 느려진다.

  • 이를 해결하기 위해 데이터의 양을 조절해야 한다.
    대표적인 방법으로는 AIMD(Addictive Increase/Multicative Decrease)가 있다.
    이는, 데이터양을 슬금슬금 늘리다가, 상대가 데이터를 제대로 받지 못한 것이 확인되면 그 즉시 보내는 양을 확 줄이는 방법이다.
    1) 데이터를 보냈는데, 상대방에게서 받았다는 답장이 안 온다.
    2) 또 보낸다. 계속해서 보낸다. 많이 보낸다.
    3) 대략 30번 넘게 보냈는데, 여전히 답장이 없다.
    4) 포기한다. 또는 보내는 양을 확 줄인다.
    이 방법을 이용해 데이터양의 한계치를 지정해 네트워크 폭주를 막는 것.

  • 이런 다양한 기능을 추가한 덕분에 안정성은 높아졌지만, 자체 용량이 많아져 속도가 느리다.

TCP의 데이터 형식.(바이트 스트림)

  • 바이트 스트림은 데이터를 바이트 단위로 주고 받는 것을 말함. (말그대로 1바이트(8비트)씩 보냄)
  • '0'과 '1'로 이루어진 원시체계.

TCP의 헤더.

UDP(User DataGram Protocol)

  • TCP와 같은 4번째 계층인 전송 계층(Transport Layer)에서 사용하는 규약.
  • TCP는 신뢰성은 높지만, 덕분에 속도는 느리다는 제약이 있었다.
    (대표적으로 동영상 버퍼링이 엄청 심하다.)
  • 이를 해결하기 위해 UDP가 등장.
  • 데이터 단위는 데이터그램(Datagram).

UDP의 특징.

  • 비연결 프로토콜(Connectionless protocol)
    TCP와 다르게 UDP는 데이터를 보낼 때, 굳이 상대방과 연결할 필요가 없다.
    그냥 자신의 데이터를 목적지에 전달만 하면 되는 것.

  • 속도 향상: TCP처럼 번거로운 확인 절차가 없기에 속도가 훨씬 빠르다.

  • 신뢰성 없음: 상대방과 연결이 없기에, 받는 이가 정말 자신이 원하는 상대방인지 확인할 방법이 없다.
    그래서 보내는 사람은 상대방이 누구인지도 모르고 데이터를 보내기만 한다.

UDP의 데이터 형식(데이터그램).

  • 이름에서 알 수 있다시피 (User DataGram Protocol) 데이터그램 형식.

  • 데이터그램은 전달할 데이터의 형식, 기본 단위를 의미한다.
    말 그대로 보낼 데이터가 어떤 형식인지를 말한다. (???)

  • TCP는 바이트스트림, UDP는 데이터그램... 이라고 알고 있는데, 정확히 뭔지 헷갈리네요.

  • IP DataGram(40바이트 + 데이터): IP Header(20바이트), UDP Header(20바이트), 데이터(미지정).

  • UDP DataGram(20바이트 + 데이터): UDP Header(20바이트), 데이터(미지정).

UDP Header

헤더: 데이터 앞부분에 파일에 대한 정보를 실어놓은 부분.

  • Source Port Number(16비트): 데이터를 보내는 송신측 호스트를 식별하기 위한 번호.
    ex) 나는 XXX인데, 너한테 데이터 보낸다. 수락해줘.

  • Destination Port Number(16비트): 데이터를 받는 수신측 호스트를 식별하기 위한 번호.
    ex) 너가 XXX맞지? 너한테 데이터가 왔어.

  • 체크섬(Checksum)(16비트): 체크섬은 전송 도중 데이터가 변형되었나 확인할 수 있는
    데이터를 전달하기 전에 세그먼트(segmunt)를 미리 수신자에게 전달한다.
    세그먼트 형식은 계산이 완료된 체크섬, 세그먼트 값 두 가지가 등봉되어 있다.
    세그먼트 값은 암호 해독에 쓰이는 숫자라 봐도 무방하다.
    1)송신자는 세그먼트를 이용해 체크섬을 계산하고, 세그먼트에 계산된 체크섬 값과, 계산에 필요한 세그먼트 값을 보낸다.
    참고로 계산된 체크섬값에는 도착 IP주소, 송신 포트번호, 입력 포트번호, 데이터 길이 등 정보가 들어가 있다.
    2)수신자는 이러한 체크섬을 데이터보다 먼저 받는다.
    3)이제 수신자는 잠시 후 받을 데이터의 정보들을 상세히 알고 있다.
    4)잠시 후 진짜 데이터가 등봉된 파일이 수신자에게 전송.
    5)수신자는 미리 받은 체크섬과 받은 파일의 정보를 비교해가며 이게 정확한 데이터인지 확인한다.

  • 데이터(??? 비트).: 데이터, 얼만큼 보낼지는 알 수 없다.

  • UDP total Length(16비트): 이 모든 정보의 길이를 저장하고 있다.

  • 데이터를 제외한 4개의 항목.
    Source Port Number, Destination Port Number, 체크섬(Checksum), UDP total Length.
    모두 합쳐 총 64비트(4바이트)이루어져 있으며 이들을 UDP헤더라고 부른다.

TCP와 UDP의 차이점.

  • TCP는 전화기로, UDP는 문자로 비유해보자.
    전화기는 일단 연락이 가고 첫 인사를 하면 상대방이 누구인지 확인할 수 있다.
    상대방이 자신이 아는 사람이란 게 확인되면, 전달하고 싶었던 것을 말한다.
    문자는 상대방이 누구인지 모른다.
    전화번호(목적지)를 알기에 보낼 수는 있지만, 상대방이 사정이 있어 번호가 바뀌었다든가 할 수도 있다.
    하지만 이쪽도 상황이 급하기에 일단 필요한 정보부터 보내고 보는 형식.

TCP 문제.

  • TCP does not support broadcasting
    : TCP는 브로드캐스팅을 지원하지 않는다. ( O )
    해설: TCP는 안전하다. 하지만 느리고 브로드캐스팅을 지원하지 않는다.

  • TCP provides extended error checking mechanisms,
    because it provides flow control and data acknowledgement
    : TCP는 확장 된 오류 검사 메커니즘을 제공합니다.
    왜냐하면 흐름 제어 및 데이터 확인을 제공하기 때문에 ( O )
    해설: TCP는 안전하다. 오류 검사를 하니까 안전하다.

  • TCP is reliable because it guarantees the delivery of data to the router
    : TCP는 라우터로의 데이터 전달을 보장하므로 신뢰할 수 있습니다. ( O )
    해설: TCP는 안전하다. 그래서 신뢰할 수 있다.

  • The delivery of data to the destination cannot be guaranteed in TCP
    : TCP에서는 대상으로의 데이터 전달을 보장 할 수 없습니다. ( X )
    해설 : TCP는 안전하다. 그리고 모든 것을 보장한다.

  • TCP is comparatively slower than UDP.
    : TCP는 UDP보다 비교적 느립니다. ( O )
    해설: TCP는 안전하다. 근데 느리다.

  • TCP is a connection-oriented protocol.
    : TCP는 연결 지향 프로토콜입니다. ( O )
    해설: 맞다.

  • TCP does not support broadcasting.
    : TCP는 브로드 캐스팅을 지원하지 않습니다. ( O )
    해설: 지원 안 해요.

  • Data sequencing is a TCP feature
    (this means that packets arrive in order in the recipient)
    : 데이터 시퀀싱은 TCP 기능입니다.
    (이것은 패킷이 수신자에게 순서대로 도착 함을 의미합니다). ( O )
    해설: 데이터 시퀀싱은 패킷이 차례대로 도착함을 의미.

  • TCP is reliable because it guarantees the delivery of data to the router of the destination.
    : TCP는 목적지의 라우터로의 데이터 전달을 보장하기 때문에 신뢰할 수 있습니다. ( O )
    해설: TCP는 안전하다. 신뢰 가능.

UDP 문제.

  • UDP is faster, simpler and more efficient than TCP.
    : UDP는 TCP보다 빠르고 간단하며 효율적입니다. ( O )
    해설: UDP는 안전하지 않다. 대신 겁나 빠르다.

  • UDP only has the basic error control mechanism
    : UDP에는 기본 오류 제어 메커니즘 만 있습니다. ( O )
    해설: UDP는 흐름제어가 없고, 에러가 발생해도 재전송을 하지 않는다.
    여기서 말하는 'basic error control'는... 나도 몰라용. 그냥 외우자.

  • UDP is a datagram oriented protocol
    : UDP는 데이터 그램 지향 프로토콜입니다. ( O )
    해설: UDP는 빠르다. 그리고 데이터 그램이다.

  • UDP does not support broadcasting
    : UDP는 브로드 캐스팅을 지원하지 않습니다. ( X )
    해설 : UDP는 빠르다. 그래서 버퍼링이 안 걸린다. -> 방송 하기에 적합.
    -> 그러니까 브로드 캐스팅을 지원한다.

  • UDP provides extended error checking mechanisms,
    because it provides flow control and data acknowledgement
    : UDP는 확장 된 오류 검사 메커니즘을 제공합니다.
    흐름 제어 및 데이터 확인을 제공하기 때문에 ( X )
    해설: UDP는 흐름 제어가 없다.

10. DHCP(Dynamic Host Configuration Protocol)

  • Dynamic Host Configuration Protocol
    직역하자면 '동적 호스트 설정 프로토콜(통신규약)'이다.
  • 호스트의 IP를 할당해주는 것을 의미.

특징

  • 호스트의 IP가 호트의 PC에 있는 게 아니라, 따로 DHCP 서버에 저장되어 있다.
  • 호스트가 IP를 요청하면 그때마다 서버에서 호스트의 IP를 자동으로 할당해준다.
  • 즉, 호스트의 네트워크 환경을 설정해 준다.(IP 주소, 서브넷 마스크, 기본 게이트웨이 및 DNS 정보)
  • 이 프로토콜은 IPV4 IPV6 모두 사용 가능하다.

장점

  • 서버에서 호스트의 IP를 관리해주므로, IP 중복 문제가 생기지 않는다.
  • 네트워크 연결 설정 시간 단축이 가능하다
    예시)
    노트북을 들고 다른 지역으로 이동했다.
    그러면 그 지역의 네트워크에 속하므로, IP도 따로 만들어야 하는데, 이걸 DHCP가 자동으로 해줘 편하다.

단점

  • DHCP 서버가 터지면, 호스트는 인터넷 사용이 불가능하다.

의문

What DHCP protocol does it use at the transport layer level?
: 전송 계층 수준에서 어떤 DHCP 프로토콜을 사용합니까?
문제에서 왜 정답이 UDP인지 모르겠다.
TCP 또한 전송 계층 수준이며 DHCP를 사용하는데 말이다.

해답.
첫째, 우선 TCP는 연결 지향적입니다. 두 개의 특정 호스트간에 TCP 연결이 정의됩니다. 그러나 DHCP 클라이언트가 처음 시작될 때 어떤 호스트와 통신 할 것인지 알 수 없습니다. 유일한 옵션은 DHCP DISCOVER 메시지를 로컬 네트워크의 모든 호스트에 브로드 캐스트하는 것입니다. 브로드 캐스트는 1 : 1 관계가 아니기 때문에 본질적으로 TCP의 연결 지향적 특성과 호환되지 않습니다. DHCP는 본질적으로 연결이 없으므로 UDP가 더 적합합니다.

둘째, DHCP 클라이언트는 DHCP 프로세스가 완료 될 때까지 할당 된 IP 주소가 없습니다. DHCP 클라이언트가 주소를 요청하려는 특정 DHCP 서버 (일반적으로는 알지 못함)를 이미 알고 있고 해당 IP 주소를 알고있는 경우에도 클라이언트가 그렇지 않기 때문에 TCP 연결을 열 수 없습니다. 서버가 응답 할 IP 주소가 아직 없습니다. 클라이언트 에 할당 된 IP 주소 가 있을 때 쯤이면 DHCP 작업이 이미 완료된 것입니다.

셋째, 위의 문제만큼 근본적으로 중요하지는 않지만 TCP를 피하면 필요한 왕복 횟수도 하나씩 줄어 듭니다. 일반적인 DHCP 교환에는 DISCOVER (클라이언트-> 서버), OFFER (서버-> 클라이언트), REQUEST (클라이언트-> 서버) 및 ACK (서버-> 클라이언트)의 두 가지 왕복이 필요합니다. TCP 연결을 설정하려면 처음에 TCP SYN 및 SYN-ACK 연결 설정 메시지에 대한 추가 왕복이 필요합니다. 3 방향 TCP 핸드 셰이크 의 최종 ACK 메시지가 나올 때까지 TCP 연결에서 데이터를 보낼 수 없습니다 .
출처: https://networkengineering.stackexchange.com/questions/64401/why-does-dhcp-use-udp-and-not-tcp

글쓴이 해설

  • 첫째, DHCP가 호스트에게 IP를 할당하는 과정에서 보내는 데이터는 간단한 것이므로, 굳이 신뢰도 높은 TCP를 쓸 이유가 없다.

  • 둘째, 호스트의 고유 IP (DHCP가 할당한 IP가 아닌 PC고유 IP)는 있지만, 아직 DHCP의 프로세스 IP는 만들어지지 않았으므로, TCP로는 데이터 전송이 불가하다.(?)

  • 결론: DHCP는 호스트에게 IP를 할당할 때, UDP 기법을 사용한다.

11. Domain Name System(DNS)

  • 호스트의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 그 반대의 변환을 수행할 수 있다.
  • 숫자로 이루어진 IP주소를 우리가 쓰는 글자로도 접속할 수 있게 해주는 시스템.

실전.

1) cmd(명령 프롭프트)로 들어간다.
2) tracert google.com 입력 후 엔터.
3) google.com [172.xx.xx.xx](으)로 가는 경로 추적:이런 글이 뜨는데, 저 IP가 바로 구글의 IP다.
4) 인터넷 주소 입력 창에 저 IP로 입력하고 접속해도 똑같이 구글로 들어가진다.

12. ICMP

  • Internet Control Message Protocol, 인터넷 제어 메시지 프로토콜

IP 네트워크에서 사용하는 가장 기본적인 프로토콜이며, 네트워크 제어를 위한 각종 메시지가 규정되어 있다

  • 4.1. 핑(Ping)
    해당 IP 를 가진 장비에 접속 가능한지 확인하는 프로그램이며 위에 언급한 echo request 를 던지고, 이로 부터 받은 echo reply 를 확인한다. 정상적으로 echo reply 를 수신하는 경우 수신까지 걸릴 시간을 계산하여 해당 장비까지 회선 속도를 가늠해 볼 수 있다. 반대로 reply 를 수신하지 못하거나, destination unreachable 을 수신하게 되면 해당 장비에 도달할 수 없다는 것을 알 수 있다.

  • 4.2. 트레이스라우트(traceroute)
    해당 장비까지 가는 경로를 추척하는 프로그램이다.

  • 출처: TREE WIKI.

  • 그다지 중요한 건 아니니 PASS.

13. PING(Paket Internet Groper)

  • IP 네트워크를 통해 특정한 호스트가 도달할 수 있는지의 여부를 테스트하는 데 쓰이는 컴퓨터 네트워크 도구중 하나이다.
  • 즉, 지정한 주소의 네트워크가 정상적으로 인터넷이 가능한지 확인하는 도구.

실전.

  • cmd(명령 프롭프트)로 들어가서, ping 127.0.0.1입력.
    이러면 서버에서 지정한 주소(127.0.0.1)로 메세지를 보낸다.
    메세지를 받은 호스트는 잘 받았다는 답장을 보낸다.
    이 과정에서 시간이 얼마나 걸리냐 판단해서, 인터넷 성능을 알 수 있다.
    127.0.0.1은 본 호스트의 로컬(localhost) 주소를 의미.

14. 기타 문제.

  • What is the size of an IPv4 address?
    : IPv4 주소의 크기는 얼마입니까?
    정답: 32bits

  • What is the size of an IPv6 address?
    : IPv4 주소의 크기는 얼마입니까?
    정답: 128bits

  • ___ translates Internet domain names and host names into IP addresses
    : 도메인 이름 시스템은 인터넷 도메인 이름과 호스트 이름을 IP 주소로 변환합니다. ( O )
    정답: Domain Name System.

  • What type of address is supported by DHCP?
    : DHCP는 어떤 유형의 주소를 지원합니까?
    정답: IPV4, IPV6

  • What DHCP protocol does it use at the transport layer level?
    : 전송 계층 수준에서 어떤 DHCP 프로토콜을 사용합니까?
    정답: UDP

  • Which protocol does Ping use?
    : Ping은 어떤 프로토콜을 사용합니까?
    정답: ICMP

  • You want to implement a mechanism that automates IP configuration, including IP address, subnet mask, default gateway and DNS information. What protocol will you use to achieve this?
    : IP 주소, 서브넷 마스크, 기본 게이트웨이 및 DNS 정보를 포함하여 IP 구성을 자동화하는 메커니즘을 구현하려고합니다. 이를 달성하기 위해 어떤 프로토콜을 사용할 것입니까?
    정답: DHCP

profile
신입

2개의 댓글

comment-user-thumbnail
2021년 4월 13일

안녕하세요~ㅎㅎ

1개의 답글