패킷 (Packet)
네트워크를 통해 전송되는 데이터의 작은 조각, 다 받고 나서 원래대로 되돌리는 작업을 함
랜 (LAN, Local Area Network)
사무실 같은 근거리 네트워크
WAN (Packet)
네트워크를 통해 전송되는 데이터의 작은 조각, 다 받고 나서 원래대로 되돌리는 작업을 함
회사
- DMZ (DeMilitarized Zone, 공개 서버) 로 외부에 공개 (웹 서버, 메일 서버, DNS 서버, 스위치)
- 회사 서버는 온프레미스나 클라우드로 운영
- 라우터 (공유기) 를 통해 ISP (인터넷 서비스 제공자) 와 연결
프로토콜
네트워크가 통신 하기 위한 규칙
OSI 모델, TCP/IP 모델
- ISO (국제표준화기구) 에서 OSI 라는 통신 표준 규격 만듦
- OSI 모델 7계층 (응용, 표현, 세션, 전송, 네트워크, 데이터 링크, 물리)
(--> 순서로 송신, <-- 순서로 수신) - TCP/IP 는 4계층 (응용, 전송, 인터넷, 네트워크 접속)
- 각각 계층에는 다양한 프로토콜이 있음
캡슐화, 역캡슐화
- 캡슐화 : 송신 데이터 앞 부분에 필요한 정보 (데이터 받을 상대방 등) 를 붙임
- 역캡슐화 : 캡슐화 된 데이터의 헤더를 하나씩 제거
- 계층간 헤더를 붙이며, 데이터 링크 계층에서 마지막으로 트레일러 (데이터 마지막에 추가) 까지 붙여서 최종적으로 전기 신호로 수신 측에 전달
물리 계층
- 랜 카드 (PC 메인보드에 포함) 를 사용하여 디지털 데이터를 전기 신호 (아날로그 신호) 로 변환하여 전송
- 리피터 (repeater) : 전기 신호를 복원하고 증폭, 신호를 멀리 보낼 때 중간에서 사용
- 허브 (hub) : 여러 개의 포트로 여러 대의 컴퓨터와 통신하며, 리피터 역할도 함 (공유기처럼 생김..)
데이터 링크 계층
- 네트워크 장비 간에 신호를 주고받는 규칙을 정하는 계층으로, 랜에서 사용
가장 많이 사용하는 규칙이 이더넷 (Ethernet) 허브와 같은 장비에 연결된 컴퓨터와 데이터를 주고 받을 때 사용
MAC 주소 (Media Access Control Address) (물리 주소)
- 랜 카드에 할당되는 주소, 전 세계에서 유일한 번호로 할당 됨.(ex : 00-23-AE-D9-7A-9A)
- 네트워크 계층 (@ TCP/IP) 에서 이더넷 헤더, 트레일러를 붙임
*이더넷 헤더 : 목적지 MAC 주소 (6바이트), 출발지 MAC 주소 (6바이트), 유형 (2바이트) *이더넷 유형 : 프로토콜 종류 식별 번호 (ex : 0800 - IPv4, etc..) - 트레일러 : FCS (Frame Check Sequece) - 데이터 전송 도중에 오류 발생 유무 확인
- 이더넷 헤더와 트레일러가 추가된 데이터를 '프레임' 이라 함. 네트워크를 통해 프레임이 전송되는 것..
스위치
- 스위치는 데이터 링크 계층에서 동작, 레이어 2 스위치 or 스위칭 허브라고 불림 (공유기처럼 생김..)
- 스위치 내부에는 MAC 주소 테이블 (스위치 포트 번호와, 포트에 연결된 컴퓨터 MAC 주소의 DB)
네트워크 계층
- 물리 계층 : 전기 신호로 변환
- 데이터 링크 계층 : 이더넷 규칙 기반 데이터 전송 (네트워크 안에서만 통신)
- 네트워크 계층 : 네트워크 간 통신 가능하게 함 (다른 네트워크로 데이터 보내려면 라우터 필요)
*라우터 : 데이터 목적지가 정해지면 해당 목적지까지 어떤 경로로 가는 것이 좋은지 알려줌 - LAN 에서는 MAC 주소만으로도 통신이 되지만, 다른 네트워크는 IP (Internet protocol) 주소가 필요함
- 네트워크 계층에서 캡슐화를 할 때 IP 헤더 (버전, 헤더 길이, 서비스 유형, 전체 패킷 길이, ID, 조각 상태, 조각의 위치, TLL, 프로토콜, 헤더 체크섬, 출발지 IP 주소, 목적지 IP 주소) 를 붙여서, IP 패킷 (=IP 헤더 + 데이터) 을 만듦
IP 주소의 구조
- IP 주소는 ISP 에게 받을 수 있음
- IP 버전에는 IPv4 (32비트, 주소 43억개), IPv6 (128비트, 340간 개) 가 있으며, 현재 두개가 공존 함
- 공인 IP : ISP 가 제공, 인터넷에 직접 연결된 컴퓨터나 라우터가 사용
- 사설 IP : 회사나 가정의 LAN 의 컴퓨터가 사용 (LAN 네트워크 관리자가 할당하거나 라우터 DHCP 기능 활용)
- 공인,사설 IP 모두 32비트를 사용하며, 사람이 보기 쉽게 8비트로 변환해서 표현
IP 주소의 클래스
- IPv4 는 네트워크의 크기를 조절, 클래스로 구분
- 네트워크 ID : 어떤 네트워크인지 나타냄, 호스트 ID : 해당 네트워크에서 어떤 컴퓨터인지 나타냄
- A 클래스 : 네트워크 ID 8 비트, 호스트 ID 24 비트
- B 클래스 : 16 / 16
- C 클래스 : 24 / 8
특별한 IP 주소 (컴퓨터에 할당 불가)
- 네트워크 주소 : 호스트 ID 가 0, ex : 192.168.1.0, 전체 네트워크의 대표 주소
- 브로드캐스트 주소 : 호스트 ID 가 255, ex : 192.168.1.255, 네트워크 안의 장비 모두에 한 번에 데이터 전송 하는데 사용
서브넷 (subnet) : 분할 된 네트워크
- 서브넷팅 : 네트워크를 분할 (A 클래스의 경우 호스트 ID 가 24비트여서 IP 주소 1677만 개 사용 가능)
- 전체 네트워크에 브로드캐스트 패킷 전송 시 네트워크 지연 발생 하므로, 네트워크를 작은 네트워크로 분할
- 서브넷팅 시, 네트워크 ID / 서브넷 ID / 호스트 ID 로 분할 됨
- 서브넷 마스크 : 네트워크 ID 와 호스트 ID 를 식별
라우터
- 서로 다른 네트워크와 통신하려면 라우터가 필요
- 라우터는 네트워크를 분리 할 수 있음 (1개의 라우터에 192.168.1.0/24 네트워크 아래 스위치(레이어2), 다른 192.168.2.0/24 네트워크 아래 스위치 (레이어2)) 단, 스위치(레이어2) 와 허브는 분할 할 수 없음
- 네트워크 분할 후, 다른 네트워크로 접속하려면 라우터의 IP 주소를 설정 해야 함 (default gateway) 데이터를 다른 컴퓨터로 바로 보는게 아니라 일단 라우터로 데이터를 전송
전송 계층
- 전송 계층 역할1 : 목적지에 신뢰 할 수 있는 데이터를 전송하기 위해 필요 (오류를 점검하는 기능이 있음)
- 전송 계층 역할2 : 데이터 목적지가 어떤 애플리케이션인지 식별
- 연결형 통신 프로토콜 : 데이터를 상대방과 확인해가며 통신, TCP (Transmission Contorl Panel, 전송 제어 프로토콜)
- 비연결형 통신 프로토콜 : 상대방 확인 없이 일방적으로 데이터 전송, UDP (User Datagram Protocol)
- 대역폭(bandwidth) : 정해진 시간동안 전송 될 수 있는 데이터의 양(속도)
TCP (연결형 통신 프로토콜) 의 구조
- 세그먼트 : TCP 헤더 (출발지 포트 번호, 목적지 포트 번호 등등..) + 데이터
- 연결형 통신 프로토콜은 데이터 전송하려면 먼저 연결(connection) 이라는 가상의 독점 통신로 확보 필요
TCP 헤더의 코드 비트 (107~112번째 비트) 중에 SYN, ACK 활성화가 필요 (1 bit, 비 활성화 시 0 bit)
SYN 은 연결 요청, ACK 는 확인 응답 - 3way 핸드셰이크, 일련번호, 확인 응답번호.. 를 활용하여 데이터를 정확하게 전달 (중략)
- 3way 핸드셰이크 : 데이터를 보내기 전에 연결을 확립하기 위해 패킷 요청을 3번 교환 (SYN, SYN+ACK, ACK)
연결을 끊을 때는 FIN, ACK 를 교환 - 3way 핸드셰이크 끝나고 실제 데이터 보내거나 받을 때는 TCP 헤더의 일련번호 (sequence number) 와 확인 응답 번호 (acknowled gement number) 를 사용
포트 번호의 구조
- 포트 번호를 통해서 전송 데이터의 목적지가 어떤 어플리케이션인지 구분 (포트 번호 모르면 웹 브라우저에 메일 데이터가 전송 될 수도 있음..)
- 포트 번호는 0~65535 번 사용 가능
- 0~ 1023번 포트는 주요 프로토콜이 사용 (서버 측 어클리케이션이 사용) (well known ports)
- 1024 번은 예약되어 있지만 사용하지 않는 포트
- 1025 번 이상은 렌덤 포트 (클라이언트 측의 송신 포트)
- 어플리케이션에 따라 포트 번호 부여 (SSH-22, SMTP-25, DNS-53, HTTP-80, POP3-110, HTTPS-443)
UDP 의 구조
- UDP 는 비연결형 통신이라서, 데이터를 효율적으로 빠르게 보낼 수 있음 (스트리밍 방식의 동영상 서비스..)
- UDP 데이터그램 : UDP 헤더 + 데이터
응용 계층 : 애플리케이션에 데이터 전송하기 (응용 계층 : 세션 계층, 표현 계층)
- 서버에서 동작하는 웹 서버 프로그램, 메일 서버 프로그램 어플리케이션은 응용 계층에서 동작 함
- 응용 계층은 클라이언트의 요청을 전달하기 위해 통신 대상이 이해 할 수 있는 데이터로 변환하고 전송 계층에 전달
- 클라이언트 측 어플리케이션 (웹 브라우저, 메일 프로그램, FTP 클라이언트 등)이 서버 측 앱 (웹 서버 프로그램, 메일 서버 프로그램, FTP 서버 프로그램)과 통신하려면 응용 계층의 프로토콜을 사용해야 함
[응용 계층 프로토콜]
- HTTP (Hypertext transfer protocol) : 웹 사이트 접속
- FTP (File transfer protocol) : 파일 전송 할 때
- SMTP (Simple mail transfer protocol) : 메일 보낼 때
- POP3 (Post office protocol) : 메일 받을 때
- DNS (Domain name system) : 네트워크 이름 기반으로 IP 이름 알아 낼 때
응용 계층 | HTTP | DNS | FTP | SMTP | POP3 | 기타 프로토콜 |
전송 계층 | TCP | UDP | ||||
네트워크 계층 | IP 등 | |||||
데이터 링크 계층 | 이더넷 | |||||
물리 계층 | 전기 신호 변환 |
웹 서버의 구조 (웹 사이트 접속)
- 웹 (Web, WWW, W3, World wide web)
- WWW 는 HTML (Hypertext markup language), URL (Uniform resource locator), HTTP 3가지 기술 사용
- 클라이언트 (웹 브라우저) 는 웹 사이트를 보기 위해 서버 (웹 서버 프로그램) 의 80번 포트를 사용하여 HTTP 통신을 함. 클라이언트에서 HTTP request 를 하고, 서버에서 HTTP response 를 반환 함
- 클라이언트가 데이터를 "요청" 할 때 "GET" 이라고 하는 요청 정보, 파일 이름, 버전 등을 서버에 전송. 그러면 서버는 "응답" 으로 요청을 정상적으로 처리했다는 "OK" 정보와 index.html 을 클라이언트에 보냄
- HTTP/1, HTTP/1.1, HTTP/2 버전이 있으며 1.1 에 keepalive 기능, 2 에서 비동기 기능(?)이 추가 됨.
DNS 서버의 구조 (이름 해석)
- DNS : 이름 해석을 통해 도메인 이름을 IP 주소로 변환 (응용 계층에 속함), URL 을 IP 주소로 변환 해 줌
- DNS 서버가 url 에 맞는 IP 주소를 제공 해 줌. DNS 서버는 전 세계에 흩어져서 모두 계층적으로 연결되어 있음
메일 서버의 구조 (SMTP 와 POP3)
- 메일을 보내는 SMTP 프로토콜은 포트 번호 25번, 메일을 받는 POP3 프로토콜은 110번 사용
- 포털사이트나 회사의 메일 서버가 중계
- 그 외 자세한 내용은 생략..
네트워크의 전체 흐름
- 랜 카드에서의 데이터 전달 처리
[컴퓨터의 웹 브라우저 URL 입력부터 웹 서버 도착까지의 과정]
- 연결 확립 (3-way 핸드셰이크)
- 컴퓨터에서 웹 브라우저 URL 입력
- 응용 계층에서 HTTP 프로토콜 활용하여 HTTP 메시지 전달 (GET /index.html HTTP/1.1~)
- 데이터가 전송 계층에 전달되어 TCP 헤더 붙여서 "세그먼트"를 만
출발지 포트 번호 (웹 브라우저) : 무작위로 선택 됨
목적지 포트 번호 : 80 (HTTP 이므로) - 데이터가 네트워크 계층에 전달되어 IP 헤더 붙여서 (출발지 IP, 목적지 IP) "IP 패킷" 만듦
- 데이터가 데이터 링크 계층에 전달되어 이더넷 헤더 붙여서 "이더넷 프레임" 을 만듦
- 물리 계층에서 전기 신호로 변환되어 네트워크로 전
스위치와 라우터에서의 데이터 전달과 처리
- 스위치 A는 데이터 링크 계층에서 데이터를 전기 신호로 변환하여 라우터 A로 전송
- 라우터 A는 데이터 링크 계층에서 이더넷 프레임의 목적지 MAC 주소와 자신의 MAC 주소를 비교
주소가 같으면 이더넷 헤더와 트레일러를 분리하는 역캡슐화 수행
네트워크 계층에 전달하여 자신의 라우팅 테이블과 목적지 IP 주소를 비교
목적지 IP 주소의 경로를 알 수 있으므로, 현재 출발지 IP 주소를 라우터의 외부 IP 주소 (WAN 주소) 로 변경하고, 데이터 링크 계층으로 전달하여, 라우터 B로 보내지도록 이더넷 헤더와 트레일러를 붙인 후에 물리계층으로 전달 - 라우터 B는 이더넷 프레임의 목적지 MAC 주소와 자신의 MAC 주소를 비교, 주소가 같으면 역캡슐화 수행.
네트워크 계층으로 전달되어 라우팅 테이블과 목적지 IP 주소 확인. 라우팅을 해서 출발지 IP 주소를 라우터 B 내부 IP 주소 (LAN) 로 변경하고 데이터 링크 계층에 전달하여 스위치에 전달 되도록 이더넷 헤더와 트레일러를 붙인 후 물리 계층에 전달. - 스위치 B 에서는 전기 신호를 데이터 링크 계층에서 처리하고, 웹 서버에 데이터를 전
웹 서버의 데이터 전달과 처리
- 데이터가 전기 신호로 웹 서버에 도착
- 웹 서버는 데이터 링크 계층에서 이더넷 프레임의 목적지 MAC 주소와 자신의 MAC 주소를 비교. 같으면 이더넷 헤더와 트레일러를 분리하고 네트워크 계층에 전달
- 네트워크 계층에서 목적지 IP 주소와 웹 서버의 IP 주소가 같은지 확인. 주소가 같으면 IP 헤더를 분리하고 전송 계층에 전달
- 전송 계층에서 목적달지 포트 번호를 확인하여 어떤 어플리케이션으로 전달 할 지 판단하고 TCP 헤더를 분리하여 응용 계층에 전달
- 웹 서버의 응용 계층에 도착
위 과정은 요청 한 번이 처리되는 과정이고, 이 다음에 컴퓨터로 응답을 보내야 함. 웹 사이트의 동작은 컴퓨터와 웹 서버 사이에 몇 번이고 요청과 응답의 교환이 이루어짐.
무선 랜 이해하기
- 무선 랜은 전파를 이용하여 무선으로 컴퓨터를 연결
- 무선 엑세스 포인트 (wireless access point, WAP), 무선 클라이언트로 구성
- 컴퓨터가 WAP 와 통신하려면 무선 랜 칩(Chip), 무선 랜 어댑터 (adapter) 가 필요.
- 최근 컴퓨터는 대부분 무선 랩 칩 내장 / 무선 랜 어댑터에는 USB 메모리 방식, 컴퓨터 카드 방식 존재
- 무선 엑세스 포인트와 무선 클라이언트를 연결하려면 혼선을 피하기 위해 SSID (Service Set Identifier) 엑세스 포인트 고유 이름 사용. 네트워크 이름, 인증, 암호화, 암호화 키 설정이 필요
- SSID 구조 이하는 생략...
'Computer science (이동 완료) > 네트워크' 카테고리의 다른 글
프록시란 (0) | 2023.09.11 |
---|---|
SSH 란 (0) | 2022.10.30 |