용어
네트워크
데이터 전송과 데이터 처리를 유기적으로 결합하여 어떤 목적이나 기능을 수행하는 시스템
- 데이터 전송 : 컴퓨터에 의해 처리된 정보를 전송하는 것
- 데이터 처리 : 컴퓨터에서 정보를 처리하는 것
LAN(Local Area Network)
LAN은 일반적으로 300m 이하의 통신 회선으로 연결된 PC 메인 프레임, 워크 스테이션들의 집합
종단 시스템을 가장자리 라우터에 연결하는데 사용됨
프로토콜 (Protocol)
서로 다른 시스템에 있는 두 개의 엔티티가 통신하려면 서로 동일 약속이 필요함. 이러한 통신 규약들을 의미함
인터넷 정보의 송 수신을 제어한다.
ex) TCP / IP
패킷 (packet)
송신 중단 시스템에서 수신 종단 시스템(목적지)로 보내지는 것
송신 종단 시스템이 보내고자 하는 데이터를 세그먼트로 나누고, 각 세그먼트에 헤더를 부착하여 수신 종단 시스템으로 전송한다
* 세그먼트 : Transport 계층의 단위
호스트 (host)
인터넷에 연결되는 컴퓨터와 그 밖의 장치들
인터넷의 가장 자리를 차지하고 있어 종단 시스템이라고도 부름
애플리케이션을 수행한다
클라이언트와 서버로 구분된
프로토콜의 기능
- 주소 지정 (Addressing) : 상대 엔티티의 이름
- 순서 지정 (Sequencing) : 연결 지향형에만 사용 가능하며, 프로토콜 데이터 단위가 전송될 때 보내지는 순서를 명시함
→ 순서에 맞게 전달, 흐름제어, 오류제어 등 수행 가능
ex ) TCP / IP - 단편화 및 재조합 (Fragmentation and Reaseembly) : 두 엔티티 사이에서 대용량의 데이터를 교환하는 프로토콜의 경우 대부분 같은 크기의 데이터 블록으로 분할하여 전송
- 데이터 흐름제어 (Data Flow Control) : 수신 엔티티에서 송신자로부터 받은 데이터의 양이나 속도 제어
- 연결제어 (Connection Control) : 연결 지향형 데이터 전송에서는 연결 설정, 데이터 전송, 연결 해제의 3단계로 구성
- 캡슐화 (Encapsulation) : PCI에는 송신자와 수신자 주소, 오류 검출 코드, 프로토콜 제어 정보의 데이터에 제어 정보를 덧붙임
- 오류제어 (Error Control) : 두 엔티티에서 데이터를 교환할 때 네트워크 레이어 간 SDU나 PCI가 잘못된 경우, 이를 발견하는 기법
- 동기화 (Synchronization) : 두 엔티티간에 데이터가 전송될 때 각 엔티티는 특정 타이머 값이나 윈도우 크기 등을 기억해야 하는데 두 엔티티가 동시에 잘 정의된 인자 값을 공유하는 것
- 멀티플렉싱 (Multiplexing) : 하나의 통신 링크에서 여러 시스템이 동시에 통신할 수 있는 기법 / 목적지에서 분할
- 전송 서비스 ( Transmission Service) : 우선순위 결정, 서비스 등급과 보안 요구 등을 제어하는 서비스
네트워크의 전체적인 동작
LAN
하나에 네트워크(LAN)에는 수많은 호스트들이 존재한다. 해당 호스트들은 모두 LAN에 연결되어있다.
ex) 어떤 학교 네트워크에 접속되어있는 사람들
모든 호스트들이 일대일로 연결될 수는 없기 때문에 중계기를 이용하여 연결이 된다.
하나에 중계기에는 여러개의 호스트들이 연결되어 있다.
즉, 중계기에 연결되어 있는 호스트가 보낸 메세지는 중계기를 통해 전달된다
중계기에는 두 가지 종류가 있다.
- Hub : 연결되는 모든 host에 boradcast 해줌 (모든 호스트에 전송함)
- Switch : 목적지에 따라 host를 구분해서 전송해줌
host들이 Hub나 Switch에 연결되고, 이 Switch/Hub끼리 또 연결되어서 하나의 LAN이 만들어지게 된다
LAN은 같은 네트워크 주소를 가지고 있음
▶ 2계층에서 동작함
WAN (Internet)
다른 LAN의 웹서버에 접속하고자 한다고 생각해보자
내 네트워크 주소 밖에 있는 네트워크에 접속해야한다.
내부 네트워크 (LAN)은 gateway라는 관문을 가지고 있다.
외부 네트워크에서 들어오는, 내부 네트워크에서 나가는 모든 패킷은 gateway를 통과해서 나간다.
네트워크와 네트워크 사이를 연결해주는 것을 인터넷이라고 하며, router를 통해 다른 네트워크로 간다.
*Gateway로 사용되는 라우터는 LAN쪽과 Internet쪽에 다른 IP/MAC 주소를 가지고 있다.
따라서 밖으로 나가는 패킷은
- 내부 네트워크의 gateway로 전송
- 인터넷을 통해 도착하고자 하는 네트워크의 gateway로 전송
- 도착하고자 하는 네트워크에서 도달하고자 하는 host(웹서버)를 찾아서 도착하게 된다.
한 시스템이 속한 네트워크를 벗어나서 다른 네트워크로 연결되기 위해서는 고유의 주소가 필요하게 된다.
이를 IP 주소라고 한다.
▶ 3계층에서 동작함
IP 주소
네트워크 주소 + 호스트 주소
IP 프로토콜 : IP 주소를 기반으로 한 통신
- 네트워크 주소 : 인터넷을 통해 해당 네트워크의 gateway까지 전송됨
- 호스트 주소 : 내부 네트워크에서 특정 호스트에 해당하는 시스템을 찾아서 전송됨
* 내부 네트워크에서는 IP주소로 host를 구분하지 않음
내부 네트워크는 MAC주소 (하드웨어 주소)로 구분함
LAN에서는 IP 주소로부터 해당하는 MAC 주소를 찾아서 통신하게 됨
네트워크 계층에 따른 동작
https://m-in-zu.tistory.com/81
네트워크 계층에 대한 설명이다.
- 4계층 (전송 계층) : 포트(Port)를 이용해 시스템 내의 응용 프로그램간 통신을 가능하게 함
- 3계층 (네트워크 계층) : IP 주소를 통해 원거리 시스템간 통신이 가능하게함 (LAN과 LAN 사이의 통신)
- 2계층 (데이터 링크 계층) : 물리 장치의 고유 주소인 MAC을 이용한 로컬 통신이 가능하게 함
Q) 왜 2계층에서는 왜 MAC 주소를 사용하는가? (왜 IP주소를 사용하지 않는가?)
A) 통신 회선이 가장 직접적으로 연결되는 시스템은 LAN 카드이다.
LAN 카드에 있는 정보가 바로 MAC 주소이기 때문에 1계층 바로 위의 2계층은 MAC 주소를 제일 빠르게 알 수 있다.
MAC 주소 vs IP 주소
MAC 주소는 실제로 존재하는 "하드웨어 주소"로 물리 정보이다.
IP 주소는 논리 정보로, 같은 하드웨어를 쓰면서도 상황 및 위치에 따라 변경될 수 있다.
IP 주소는 그럼에도 유일무이한 정보이다.
2계층
스위치에 연결되어있는 모든 호스트와 통신할 수 있음.
호스트 A에서 C에게 패킷을 보낼 때, A는 스위치로 패킷을 보낸다.
스위치는 해당 스위치에 연결된 모든 host의 MAC 주소를 알고 있으므로, C에게 패킷을 전달할 수 있다.
패킷 정보
송신 시스템의 MAC 주소와 수신 시스템의 MAC 주소를 덧붙이는 역할을 함
목적지 MAC 주소를 읽어서 해당하는 시스템에 전송할 수 있게 됨 (스위치의 경우)
Q) 목적지의 MAC 주소를 어떻게 알 수 있을까? (현재 MAC 주소는 당연히 알고 있음)
A) IP(누구에게나 오픈된 정보)를 통해 찾을 수 있다. 따라서 2계층에서는 IP 주소를 통해 MAC 주소를 알 수 있도록 하는 프로토콜이 필요하다. > ARP 프로토콜
도착지의 MAC 주소를 "아직" 알 수 없을 때에는, 가야하는 라우터의 MAC 주소를 써 놓는다.
MAC Table
hub는 모든 곳에 다 보내기 때문에 switch는 스위치에 연결된 모든 MAC 주소를 알고 있어야한다.
이를 해결하기 위해 switch는 MAC 테이블을 가지고 있다.
MAC 테이블은 스위치의 포트 번호와 MAC 주소를 저장하고 있음.
ARP 프로토콜
브로드캐스팅을 이용한다.
해당 네트워크에 속하는 모든 시스템에게 해당 IP에 해당하는 시스템의 MAC 주소를 전송해달라고 하는 것
* 해당 네트워크에 브로드캐스팅을 한다.
Q) 외부 네트워크에서 MAC주소를 알아낼 수 없는가?
A) 2계층에서 ARP 프로토콜이 MAC 주소를 찾는 프로토콜인데, 브로드캐스팅(255)를 이용하기 때문이다.
브로드캐스팅은 같은 네트워크에서만 사용할 수 있음
3계층
IP 프로토콜
ip 주소를 이용하여 시스템을 구분함
인터넷을 통한 네트워크 통신이 가능하도록 함
패킷 정보
송신 IP와 수신 IP의 주소를 덧붙이는 역할을 함
ICMP 프로토콜
- 오류, 경고, 일반 알림 등을 위한 메세지 시스템으로 사용
- 오류 보고 메시지
IP 패킷을 처리할 때 라우터나 호스트에서 발생하는 문제들을 송신자 IP로 보고
목적지 도달 불가, 발신지 억제, 시간 초과, 파라미터 문제와 같은 오류 발생 시, 오류 보고
질의 메시지 : 호스트나 네트워크 관리자 혹은 라우터나 다른 호스트로부터 정보를 얻을 수 있도록 도와줌
2-3계층의 패킷 흐름의 예
- 패킷 송신 시스템의 IP : 172.16.0.100
- 라우터의 랜쪽 포트의 IP : 172.16.0.1
- 패킷 송신 시스템의 MAC 주소 : AA-AA
- 라우터의 랜쪽 포트의 MAC 주소 : BB-BB
- 라우터의 인터넷쪽 포트의 MAC 주소 : CC-CC
출발지의 IP 와 MAC 주소가 기록됨
목적지 IP 주소 입력
목적지 MAC 주소의 게이트웨이의 MAC 주소가 입력됨
ARP 프로토콜을 이용하여 게이트웨이의 MAC 주소를 알아낸다
라우터에서 사용한 2계층의 정보를 없앰
라우터는 3계층 통신의 중계기
다음 라우터까지의 2계층 정보를 패킷 정보에 추가함
IP에 따라 어떤 라우터로 보내야할 지 정해져있는 라우팅 테이블을 가지고 있다.
만약 라우터가 그 라우터의 MAC 주소를 모른다면(알 수도 있지만) ARP 프로토콜처럼 연결된 모든 라우터에 해당 MAC 주소를 알려달라는 요청을 보냄
인터넷쪽 라우터의 MAC 주소가 CC-CC였으므로, 그 전의 정보는 중요하지 않다.
DD-DD는 200.1.1.20까지 가기 위해 경유해야할 다음 라우터의 네트워크 인터페이스 카드의 MAC 주소이다.
> 해당 과정을 목적지 네트워크에 도달할 때까지 반복한다.
4계층
각 시스템에 도착한 패킷을 시스템 내 무슨 프로그램에게 전송할 것인가 결정
4계층의 대표적인 프로토콜 : TCP > TCP의 주소 = 포트 (0번 ~ 65535번)
응용 프로그램의 서비스 별로 자신에게 해당되는 패킷을 식별할 필요가 있음
패킷 정보
송신 포트 (응용서비스)와 수신 포트(응용서비스)의 패킷 정보를 덧붙이는 역할을 함.
송신 포트는 사실 중요하지 않기 때문에 1025번부터 65535번 사이의 포트 중에서 사용하지 않는 임의의 포트를 응용 프로그램별로 할당한다.
포트 번호
20/21 : FTP
23 : Telnet
25 : SMTP
53 : DNS
80 : HTTP
110 : POP3
등으로 사용한다
TCP 프로토콜
- 연결 지향형 프로토콜 : 주고받는 데이터의 신뢰성을 보장하고, 데이터의 확실한 전송을 보장함
- 수신측이 데이터를 흘려버리지 않게 데이터 흐름제어
- 전송 중 에러가 발생할 경우 자동으로 재전송하는 에러 제어
- HTTP, SSH, FTP
- 완전하지는 않아서 해커들에게 많은 공격을 받음
3 way handshacking
- 통신전
- 클라이언트는 포트가 닫힌 Closed 상태
- 서버는 해당 포트로 항상 서비스를 제공할 수 있도록 Listen 상태 - 클라이언트가 통신 요청
- 임의의 포트 번호가 클라이언트 프로그램에 할당
- 클라이언트 : Syn Sent 상태 - 서버 통신 수락
- 서버는 SYN Received 상태
- 클라이언트에게 SYN + ACK 패킷 전송 - 서버 응답 확인
- 클라이언트는 서버의 응답을 확인했다는 표시로 ACK 패킷 전송
UDP 프로토콜
- 데이터의 신뢰성 있는 전송을 보장하지는 않음
- DNS, Voice of IP(VolP)
- 효율적 : 전송 경로 확립을 위한 번잡함을 생략하고 시간 절약
- 신뢰성이 매우 높은 회선을 사용하거나 데이터의 확실한 전송을 요구하지 않는 통신 등에 사용
- 한번에 많은 상대에게 메시지를 전송하고자 사용함
3계층과 4계층의 정보 확인
netstat -an
'CS > Computer Network' 카테고리의 다른 글
Packet Switching Network Delay | 패킷 교환 네트워크에서의 지연 (5) | 2024.10.09 |
---|---|
Sharing the Links | 네트워크의 링크 공유 (3) | 2024.10.09 |
Internet | 인터넷 (0) | 2024.09.26 |
Network Layer | 네트워크 계층구조 (0) | 2024.09.12 |
Wireshark 캡처하기 (BIOCPROMISC: Operation not supported on socket) (0) | 2024.09.11 |