4계층 프로토콜

4계층에서 하는 일

  • 전송 계층(Transport Layer)는 송신자의 프로세스와 수신자의 프로세스를 연결하는 통신 서비스를 제공
  • 전송 계층은 연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어, 그리고 다중화 같은 편리한 서비스 제공
  • 종류
    • 전송 제어 프로토콜(Transmission Control Protocol):  연결 지향 전송 방식을 사용
    • 사용자 데이터그램 프로토콜(User Datagram Protocol):보다 단순한 전송에 사용

UDP(User Datagram Protocol)

안전한 연결을 지향하지 않는 UDP 프로토콜 (전송 여부 미확인)

TCP(Transmission Control Protocol)

안전한 연결을 지향하는 TCP 프로토콜 (전송 여부 확인)

6분 46초


 

포트 번호

포트 번호의 특징

  • 특정 프로세스와 특정 프로세스가 통신을 하기 위해 사용
  • 하나의 포트는 하나의 프로세스만 가능
  • 하나의 프로세스가 여러 개의 포트를 사용하는 것은 가능
  • 포트 번호는 일반적으로 정해져 있지만, 무조건 지켜야하는 것은 아님
  • 예를 들어, 일반적으로 웹 서비스는 80번 포트를 사용하지만 무조건 80번 포트를 사용해야하는 것은 아님

Well-Known 포트

서비스 이름 포트 번호
FTP 20, 21
SSH 22
TELNET 23
DNS 53
DHCP 67, 68
TFTP 69
HTTP 80
HTTPS 443

유명한 서버들이 쓰는 포트 번호

  Registered 포트

서비스 이름 포트 번호
오라클 DB 서버 1521
MySQL 서버 3306
MS 원격 데스크탑 3389

일반 사용자들이 사용하는 포트는 Dynamic 포트라고 하며 49152번 ~ 65535번 중 사용


실습

현재 포트 활성 여부를 나타내는 활성 연결 테이블 확인하기

netstat -ano

활성 연결 테이블의 PID와 작업 관리자에서 프로그램의 PID 확인해보기

작업관리자 열에서 우클릭해서 PID를 활성화하면 PID 확인 가능

Berryz WebShare 사용해보기

Berryz WebShare 다운로드

서버 컴퓨터로 만들어주는 프로그램

1. 압축 해체 후 프로그램 Webshare.exe 실행

2. 환경 설정에서 포트번호를 9999 로 변경

3. 할당된 주소(그림에서는 192.168.219.104)로 접속해보기

접속 불가능 서버는 포트를 80번이라고 생각하고 있기 때문

 

주소 뒤에 서버 포트 번호를 따로 입력해줄 경우 접속 가능


네이버 주소에 뒤에 :443 붙여서 접속해보기

정상적으로 접속되는 것을 확인할 수 있음 (https 포트 번호는 443이다)


참고자료

https://www.youtube.com/watch?v=tG0ldt4sBzY&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=16

위 강의를 보고 정리한 글입니다.

 

IPv4 프로토콜

IPv4가 하는 일

  • 네트워크 상에서 데이터를 교환하기 위한 프로토콜
  • 데이터가 정확하게 전달될 것을 보장하지 않는다
  • 중복된 패킷을 전달하거나 패킷의 순서를 잘못 전달할 가능성도 있다 (악의적으로 이용하면 DoS 공격)
  • 데이터의 정확하고 순차적인 전달은 그보다 상위 프로토콜인 TCP에서 보장

다른 네트워크의 특정 대상을 찾는 IPv4 프로토콜

  • 보통 IP Option은 거의 사용하지 않고 20 Bytes 사용
  • Header는 20 ~ 60bits인데 주어진 건 4칸? (4bit - 최대로 표현할 수 있는 수 15) => Header / 4  수를 씀
    일반적으로 5 사용
  • TOS는 현재 사용하지 않음 => 0
  • Total Length: Header + Payload의 길이
  • Identification와 IP Flags, Fragment Offset은 하나의 셋트라고 생각 
    • Identification: 잘게 잘라서 온 데이터를 알아볼 수 있도록 하는 ID
    • Flag Flags: 3bit로 이루어져 있음
      • x: 사용하지 않음
      • D: 데이터를 조각내지 않고 통으로 보낼 때 설정 (최대 전송단위보다 클 경우 데이터 전송 안됨)
      • M: 조각화가 되어있을 경우, 최대 전송단위보다 더 커서 뒤에 데이터가 있을 경우 1로 설정됨
    • Fragment Offset: 데이터 시작 부분부터 떨어진 순서 (조각난 데이터의 순서) / 8 되어 있음
  • TTL: 패킷이 살아있는 시간 (3계층 Router를 지날 때마다 1씩 차감됨)
    • 운영체제마다 다르게 설정됨, 이걸로 상대방 컴퓨터 운영체제를 유추할 수 있음
      • windows 128
      • linus 64
  • Protocol: 상위 프로토콜이 뭔지 알려줌
    • ICMP (3계층): 01
    • TCP (4계층): 06
    • UDP (4계층) 11 (십진수로 17)
  • Header Checksum: 앞 부분을 검증하는 용도


 

ICMP 프로토콜

ICMP가 하는 일

  • Internet Control Message Protocol  인터넷 제어 메세지 프로토콜
  • 네트워크 컴퓨터 위에서 돌아가는 운영체제에서 오류 메세지를 전송 받는데 주로 사용
  • 프로토콜 구조의  Type과 Code를 통해 오류 메세지를 전송 받음

특정 대상과 내가 통신이 잘되는지 확인하는 ICMP 프로토콜

  • Type: 카테고리
    • 기본
      • 0: Echo Reply (응답)
      • 8: Echo (요청)
    • 뭔가 잘못됐을 때
      • 3: Destination Unreachable (목적지까지 가지를 못함 ex 상대방 방화벽)
      • 11: Time Exceded (목적지까지는 갔는데, 응답 x)
    • 보안
      • 5: Redirect
  • Code: Type에서 분류한 것의 소분류


실습

wireshark

ICMP 확인

IPv4 확인


라우팅 테이블

어디로 보내야 하는지 설정되어 있는 라우팅 테이블

다른 네트워크 대역을 찾아가기 위한 지도

 


다른 네트워크와 통신 과정

내 컴퓨터에서 보낸 패킷이 다른 네트워크의 컴퓨터까지 이동 과정

요청 과정

요청을 받은 B는 역과정으로  A에게 응답을 보냄

 


실습

cmd에서 아래 커맨드 입력

netstat -r

 


IPv4의 조각화

조각화란?

  • 큰 IP 패킷들이 적은 Maximum Transmission Unit(MTU)(보통 1500 byte)를 갖는 링크를 통하여 전송되려면 여러개의 작은 패킷으로 쪼개어(조각화)되어 전송돼야 함
  • 목적지까지 패킷을 전달하는 과정에 통과하는 각 라우터마다 전송에 적합한 프레임으로 변환 필요
  • 일단 조각화 되면, 최종 목적지에 도달할 때까지 재조립되지 않는 것이 일반적
  • IPv4에서는 발신지 뿐만 아니라 중간 라우터에서도 IP 조각화가 가능
  • IPv6에서는 IP단편화가 발신지에서만 가능
  • 재조립은 항상 최종 수신지에서만 가능

여러 개의 패킷으로 조각화된 패킷

실제로는 보통 한 번만 조각화됨


실습

예시 문제

  • 보내려는 데이터 크기: 2379
  • MTU: 980
  • 몇개의 패킷으로 쪼개지는가?
  • 첫번째 패킷의 데이터 크기는 몇인가?
  • 마지막 패킷의 데이터의 크기는 몇인가?

예시 풀이

  • 헤더를 제외한 페이로드의 최대 크기: 980 – 20 = 960
  • 필요한 패킷의 수 = 2379 / 960 = 2/48 => 3개의 패킷 필요
  • 첫 번째 패킷의 데이터 크기: 헤더를 제외한 960 + 헤더 20 = 980
  • 마지막 패킷의 데이터 크기 = 남은 데이터 2379 - 960 - 960 = 459 + 헤더 20 => 479

참고자료

https://www.youtube.com/watch?v=_i8O_o2ozlE&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=9

위 강의를 보고 정리한 글입니다.

 

ARP 프로토콜

ARP가 하는 일

IP 주소를 이용해 MAC 주소를 알아옴

  • ARP 프로토콜은 같은 네트워크 대역에서 통신을 하기 위해 필요한 MAC 주소를 IP 주소를 이용해 알아오는 프로토콜
  • 같은 네트워크 대역에 통신을 하더라도, 데이터를 보내기 위해서는 7 계층부터 캡슐화를 통해 데이터를 보내기 때문에 IP주소와 MAC 주소 모두 필요 => IP 주소는 알고 MAC 주소는 모르는 경우에도, ARP를 통해 통신 가능

ARP의 구조

ARP의 구조


 

ARP 프로토콜의 통신 과정

IP 주소로 MAC 주소를 알아오는 과정

A 컴퓨터가 MAC 주소를 모르는 C 컴퓨터로 ARP 요청을 보내려고 함

  • ARP에는 목적지의 MAC 주소가 들어가는데 어떻게 요청을 보내지?

Ethernet의 목적지 MAC 주소를 전부다 1로 하고 (FF)  (브로드캐스트) 보냄

모르는 상태로 전달

2 계층 통신 장비인 스위치는 2 계층인 ethernet만 디캡슐레이션함.

목적지 MAC주소가 브로드캐스트로 설정되어 있으므로 같은 네트워크 대역에 전부다 전달

 

목적지에 전달해서 각 컴퓨터는 2계층 신호를 디캡슐레이션하고  맞는 것을 확인 (브로드캐스트)

그 다음 3계층 신호를 디캡슐레이션하여 확인함

그 과정에서 IP 주소를 확인하게 됨

컴퓨터의 IP 주소와 목적지의 IP 주소가 같지 않을 경우 패킷을 버림

C에서 응답을 보내줌

응답이라서 두 번째줄 끝이 1로 끝나는 것을 확인할 수 있음

응답이라서 목적지와 출발지가 바뀐 것을 볼 수 있음

목적지는 출발지이기 때문에 MAC 주소를 알 수 있음

A에서는 응답을 받고, ARP 캐시 테이블에 MAC 주소를 등록함


ARP 테이블

통신했던 컴퓨터들의 주소는 ARP 테이블에 남음


실습

ARP 테이블 확인해보기

cmd 실행

arp -a

ARP 프로토콜 분석하기

wireshark 실행 후, Protocol에서 ARP만 필터

  • Who has ~ ?: 요청
  • 나머지: 응답

 

다른 IP 주소에 ping 해보고,  wireshark 확인

ping 192.168.219.100

 Ethernet의 목적지 MAC 주소에 ff:ff:ff:ff:ff:ff 인 것을 확인할 수 있다


참고자료

https://www.youtube.com/watch?v=-M_S50Ga384&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=8

위 강의를 보고 정리한 글입니다.

 

3계층의 기능

3계층에서 하는 일

  • 다른 네트워크 대역, 즉 멀리 떨어진 곳에 존재하는 네트워크까지 어떻게 데이터를 전달할지 제어
  •  LAN과 LAN을 이어줌
  • 발신에서 착신까지의 패킷의 경로를 제어

3계층에서 쓰는 주소

WAN에서 통신할 때 사용하는 IP 주소

  • IPv4 주소: 현재 PC에 할당한 IP 주소
  • 서브넷 마스크: IP 주소에 대한 네트워크의 대역을 규정
  • 게이트웨이 주소: 외부와 통신할 때 사용하는 네트워크의 출입구

 

3계층 프로토콜

ARP 프로토콜

IP 주소를 이용해 MAC 주소를 알아옴

IPv4 프로토콜

WAN에서 통신할 때 사용

ICMP 프로토콜

서로가 통신되는지 확인할 때 사용


 

일반적인 IP 주소

Classful IP 주소

  • 초기에 사용
  • 낭비가 심함
    • 100.0.0.0 ~ 100.0.0.31 까지 한 네트워크 대역이 사용하면, 그 대역의 나머지 주소는 사용할 수가 없음
  • 일반적으로 c 클래스 많이 사용

192.168.0.189 는 총 4 byte = 32 bit로 이루어져 있음

따라서 한 칸(위에서 192에 해당하는 부분)은 8bit로 구성

2^8 = 256 => 십진수로 표현할 경우, 0부터 255까지 숫자 표현 가능

Classless IP 주소

  • class에 맞지 않게 사용하면 다양한 주소가 사용 가능 - 어디서든 잘라쓸 수 있게
  • 서브넷 마스크:
    • 클래스풀한 네트워크 대역을 나눠주는데 사용하는 값
    • 어디까지가 네트워크 대역인지  / 어디서부터가 호스트인지 구분하는데 사용하는지 지정
    • 32 bit (4 byte)
    • 255.255.255.192  -> 11111111.11111111.11111111.11000000
    • 2진수로 표기했을 때, 1로 시작, 1과 1사이에는 0이 올 수 없음
    • 1부분 네트워크 대역 / 0부분 해당 네크워크 대역의 컴퓨터를 구분하는 값
    • 위의 예시에는 하나의 네트워크 대역에 64대의 컴퓨터를 구분할 수 있음

사설 IP와 공인 IP

  • 공인 IP 1개당 2^32개의 사설 IP
  • NAT(Network Address Translation): 사설 IP <-> 공인 IP (IP 변환 기능)

위 공인 IP / 아래 사설IP

  • 실제 인터넷 세상에서는 공인 IP로만 통신
  • 외부 네트워크 대역에서는 사설 IP 대역이 보이지 않는다
  • 사설 IP 대역 내에서 공유기가 처리: 보낸 요청을 기억했다가 응답이 돌아올 경우 다시 돌려줌
  • 그래서 요청을 먼저 받고 응답해야하는 서버 같은 경우는 대부분 공인 IP 를 사용 

 


특수한 IP 주소

0.0.0.0

  • Wildcard
  • 나머지 모든 IP

127.0.0.X

  • 자기 자신을 뜻하는 주소

게이트웨이 주소

공유기의 IP

어딘가로 가려면 일단 여기로 (외부 세상으로 나가는 문)

일반적으로 네트워크 대역에서 사용할 수 있는 가장 작은 / 가장 큰 IP 주소


실습

1. 내 PC의 IP 주소 확인해보기

cmd에 커맨드 입력

ipconfig /all

네이버에 "내 IP 주소" 검색

 

참고자료

https://www.youtube.com/watch?v=s5kIGnaNFvM&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=6

위 강의를 보고 정리한 글입니다.

 

2 계층에서 하는 일

2 계층의 기능

  • 하나의 네트워크 대역, 즉 같은 네트워크 상에 존재하는 장비들끼리 보내는 데이터를 전달
  • 추가적으로 오류제어, 흐름제어 수행

2 계층

2 계층의 네트워크 크기

  • 2 계층은 하나의 네트워크 대역 LAN에서 통신할 때만 사용
  • 다른 네트워크와 통신하기 위해서는 3 계층이 도와줘야함
  • 3 계층의 주소와 3 계층의 프로토콜을 이용하여야만 다른 네트워크와 통신이 가능

 

2 계층에서 사용하는 주소

물리적인 주소 (MAC 주소)

  • LAN에서 통신할 때 사용하는 MAC 주소
  • 16진수로 구성
  • OUI: IEEE에서 부여하는 일종의 제조 회사 식별 ID
  • 고유번호: 제조사에서 부여한 고유번호


2 계층의 프로토콜

Ethernet 프로토콜

  • 빨간색 친 영역: 3 + 1/2 = 14byte
  • Destination Address = 6byte = 목적지 MAC 주소 (16진수 * 12개)
  • Source Address = 6byte = 출발지 MAC 주소
  • Ethernet Type: 페이로드 안의 내용(프로토콜)을 미리 알려주는 역할 - 전기적 신호 분석 용이 
    • 상위 프로토콜이 IPv4일 경우: 0 8 0 0 이 오게 됨
    • 상위 프로토콜이 ARP일 경우: 0 8 0 6 이 오게 됨

 


실습

1. 내 PC의 MAC 주소 확인해보기

cmd 열고 아래 커맨드 입력

ipconfig /all

 

로컬 영역 연결 / 물리적 주소 확인

 


2. Ethernet 프로토콜 캡쳐

Wireshark 실행

  • Ethernet II 의 헤더 부분의 14자리 16진수 확인 가능
  • 앞의 6글자: 목적지 MAC 주소 + 중간 6글자: 출발지 MAC 주소 + 끝 2글자: Ethernet type
  • 출발지 MAC 주소와 실습 1의 물리적 주소가 같은 것 확인 가능
  • 끝 2글자가 08 00이므로 뒤에 IPv4가 오는 것 확인 가능

 

참고자료

https://www.youtube.com/watch?v=HkiOygWMARs&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=5

위 강의를 보고 정리한 글입니다.

 

네트워크 모델 종류

TCP/IP 모델

  • 1960년대 말 미국 방성의 연구에서 시작, 1980년대 초 프로토콜 모델로 공개
  • 현재 인터넷에서 컴퓨터들이 서로 정보를 주고 받는데 쓰이는 프로토콜(통신 규약)의 모음

 

OSI 7 Layer

  • 1984년 네트워크 통신을  체계적으로 다루는 ISO에서 표준으로 지정한 모델
  • 데이터를 주고 받을 때 데이터 자체의 흐름을 각 구간별로 나눠 놓은 것

OSI 7 Layer 모델의 계층별 프로토콜


두 모델 비교

공통점

  • 계층적 네트워크 모델
  • 계층 간 역할 정의

차이점

  • 계층 수
  • TCP/IP - 프로토콜 기반 / OSI - 역할 기반
  • TCP/IP - 데이터 전송 기술 특화 / OSI - 통신 전반에 대한 표준

네트워크를 통해 전달되는 데이터, 패킷

패킷이란?

  • 네크워크 상에서 전달되는 데이터를 통칭
  • 네트워크에서 전달하는 데이터의 형식화된 블록 (여러 프로토콜들로 캡슐)
  • 패킷 = 제어 정보 + 사용자 데이터
  • *사용자 데이터는 페이로드라고 하기도 함

Network Packet - https://networkencyclopedia.com/network-packet/
패킷 구조

  • 페이로드 - 실제 내가 보내고자 하는 데이터
  • 헤더 - 붙을 수도 있음
  • 풋터- 일반적으로 거의 사용 x

패킷 형태 예시

패킷을 이용한 통신 과정 - Encapsulation (캡슐화)

여러 프로토콜을 이용해서 최종적으로 보낼 때, 패킷을 만드는 과정

상위 계층에서 하위 계층으로 내려가면서 프로토콜을 붙이는 것을 확인할 수 있음

 

패킷을 이용한 통신 과정 - Decapsulation (디캡슐화)

패킷을 받을 때, 프로토콜을 확인하면서 데이터를 확인하는 과정

계층별 패킷의 이름 Protocol Data Unit (PDU)

  • 세그먼트: 4계층의 PDU (TCP + 데이터)
  • 패킷: 3계층의 PDU (IPv4 + 데이터)
  • 프레임: 2계층의 PDU (Ethernet + 데이터)

실습

프로토콜의 캡슐화된 모습과 계층별 프로토콜 확인

 Wireshark

Wireshark에서 arp를 검색 후, 하나를 확인

참고자료

https://www.youtube.com/watch?v=y9nlT52SAcg&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi&index=4

위 강의를 보고 정리한 글입니다.

네트워크란?

  • 노드들이 데이터를 공유할 수 있게 하는 디지털 전기 통신망의 하나
  • 분산되어 있는 컴퓨터를 통신망으로 연결한 것을 의미
  • 네트워크에서 여러 장치들은 노드 간 연결을 사용하여 서로에게 데이터 교환
  • 노드: 네트워크에 속한 컴퓨터 또는 통신 장비를 의미

인터넷이란?

  • 문서, 그림 영상과 같은 여러가지 데이터를 공유하도록 구성된 세상에서 가장 큰 전세계를 연결하는 네트워크
  • www는 인터넷을 통해 웹과 관련된 데이터를 공유하는 것, 인터넷과는 다른 개념 

네트워크의 분류

크기에 따른 분류

  • LAN: Local Area Network
  • WAN: Wide Area Network
  • MAN: Metropolitan Area Network
  • VLAN, CAN, PAN, ... etc

LAN

가까운 지역을 하나로 묶은 네트워크

WAN

멀리 있는 지역을 한데 묶은 네트워크

가까운 지역끼리 묶인 LAN과 LAN을 다시 하나로 묶은 것

연결 형태에 따른 분류

  • Star형: 중앙 장비에 모든 노드가 연결
  • Mesh형: 여러 노드들이 서로 그물처럼 연결
  • Tree형: 마치 나무의 가지처럼 계층 구조로 연결
  • 링형, 버스형, 혼합형, ... etc

Star형

중앙 장비에 모든 노드가 연결

중앙 장비가 고장날 경우, 모든 장비 정지

Mesh형

여러 노드들이 서로 그물처럼 연결

한 곳과 연결이 끊겨도 다른 곳의 연결은 유지

https://www.submarinecablemap.com/

혼합형

실제 인터넷은 여러 형태를 혼합한 형태


네트워크의 통신 방식

유니캐스트

특정대상과 1:1로 통신

멀티캐스트

특정 다수와 1:N으로 통신

브로드캐스트

같은 네트워크 대역에 있는 모든 사용자와 통신

네트워크 프로토콜

프로토콜이란?

일종의 약속, 형식

네트워크에서 노드와 노드가 통신할 때, 어떤 노드가 어느 노드에게 어떤 데이터를 어떻게 보내는지 작성하기 위한 양식

프로토콜 종류

  • 가까운 곳: Ethernet 프로토콜 (Mac 주소)
  • 멀리 있는 곳: ICMP, IPv4, ARP (IP 주소)
  • 여러가지 프로그램으로 연락: TCP, UDP (포트 번호)
  • 실제로는 여러가지 프로토콜들로 캡슐화된 패킷 상태로 사용됨

실습

구글과 나는 어떻게 연결되어 있을까?

시작 - cmd
tracert 8.8.8.8

  • 8.8.8.8 은 구글의 dns 서버의 ip 주소
  • 내 컴퓨터가 구글 서버에 가기 위해 거쳐간 네크워크 LAN 대역대를 의미

Wireshark 설치

프로토콜 직접 확인

 

 

참고자료

https://www.youtube.com/watch?v=Av9UFzl_wis&list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi

위 강의를 보고 정리한 글입니다.

+ Recent posts