1메시지(패킷,프레임), 계층
1. 스마트폰 전화 통신
발신자 : 마이크 입력 -> 디지털 변환
기지국 : 무선 전송
이동통신사 코어 네트워크 : 수신자 위치확인, 연결, 음성 전송
인터넷 백본 : 메시지 전송
수신자 기지국 : 수신자 스마트폰 연결
수신자 : 디지털 메시지 -> 아날로그 소리 변환
2. OSI 7계층과 TCP/IP 프로토콜 모음
프로토콜 : 통신을 위한 약속.
물리적으로는 전송매체 단자 신호 회선규격 (UTP 케이블 구격)
논리적으로는 메시지구성 필드 구성(의미), 전송절차 (HTTP 메시지 형식)
인터넷 프로토콜 : HTTPS HTTP TCP IP SMTP SSH SSL
프로토콜 스위트 : HTTP TCP IP ARP
-osi 7모델
L7 : Application
L6 : Presentation
L5 : Session
L4 : Transport
L3 : Network
L2 : Data Link
L1 : Physical
-TCP IP Protocol suite
L5 : Application : HTTP / DNS / SMTP / TELENT FTP / -> url , 이메일 주소
L4 : Transport : TCP / UDP -> 포트번호 (몇 번 탭인가 구분)
L3 : Network : IP (ip 주소, 라우터는 3계층에 가깝다. IP 주소 보고 전달해서)
L2 : Data Link : 이터넷 (이더넷 주소(물리적 주소))
L1 : Physical : UTP, wifi (선), bits
-계층 별 도구
ipconfig /all -> 물리적 주소, ip, 서브넷 마스크, 공유기 주소 등 ... 이더넷과 네트워크 계층 주소 확인 가능 (L2/L3) (Mac 에서는 ifconfig)
netstat -rn (== route print) -> 라우터 정보 확인 (L3)
- 0.0.0.0 은 디폴트 경로이다. 게이트 웨이의 192.168.1.1 은 공유기 주소
- DHCP 는 기기가 네트워크에 연결될 때 공유기가 IP 를 자동부여해주는 프로토콜
- OS 안에 TCP/IP스택이 sw 로 구현되어 있다.
ping: 특정 IP 주소로 테스트 패킷을 보내 목적지까지의 통신 연결 상태와 왕복 지연 시간(RTT)을 측정합니다. (L3)
traceroute: 출발지에서 목적지 서버까지 거쳐 가는 중간 라우터(hop)들의 IP 경로와 각 구간의 지연 시간을 확인합니다 (L3)
==netstat -tn ==| mort -> 나와 상대방의 IP 포트번호와 상태가 나옴 (L4)
WireShark : 계층별 메시지 확인 도구 (전계층)
물리 신호 : wifi - analyzer (L1)
PCM분석 : (L1)
curl : HTTP 요청을 보내고 응답 결과를 터미널에 직접 출력하는 웹 접속 도구 (L7)
wget : url부터 파일을 다운로드 하는 도구 (HTTP 등을 이용, L7)
nslookup, dig : DNS 서버에 질의하여 특정 도메인 이름의 IP 주소 등을 확인함.
(DNS : L7에 속하는데 도메인이름을 실제 IP 주소로 바꿔주는거)
3. 계층별 메시지 + 헤더 = 캡슐화
데이터 보낼 때 각 계층이 자기 계층의 헤더를 붙이는거
400
계층 낮아지면서 점점 하나씩 더 붙이다가 역캡슐화 할 때 계층 높아지면서 한칸씩 풀기
Pasted image 20260419175243.png
5계층이 다 보이는 이미지
Frame (맨 위) : 실제 링크를 타고 간 전체 크기
501 bytes on wire (4008 bits)
Ethernet II (데이터링크 계층) : MAC 주소로 같은 네트워크 안에서 식별
Src: f4:d1:08:4a:cd:ba (보내는 쪽 MAC)
Dst: 70:8b:cd:2f:84:b8 (받는 쪽 MAC)
Type: IPv4 (0x0800)
IPv4 (네트워크 계층)
Src: 192.168.1.85 (내 컴퓨터, 사설 IP)
Dst: 125.209.222.141 (네이버 서버)
TTL: 128
Protocol: TCP (6)
Header: 20 bytes
TCP (전송 계층)
Src Port: 54402 (내 포트, 임시 배정)
Dst Port: 80 (HTTP 포트)
Seq: 1
Ack: 1
Flags: PSH, ACK
Window size: 13132
- Port 80 = HTTP 통신
- PSH = 데이터 즉시 전달하라
- ACK = 이전 패킷 잘 받았다 확인
- Window size = 한 번에 받을 수 있는 버퍼 크기 (BDP 관련)
HTTP (응용 계층)
하단 hex 덤프에서 보면
GET T / HTTP
Host: nave
r.com Connection: keep-alive
네이버에 HTTP GET 요청을 보내는 패킷입니다.
Pasted image 20260419180627.png
- Wireshark (와이어샤크): 가장 대표적인 패킷 분석 프로그램으로, 캡처된 패킷의 구조와 내용을 화면(GUI)을 통해 계층별로 자세히 보여주는 도구입니다. 윈도우와 리눅스 등 다양한 운영체제에서 사용할 수 있습니다.
- tcpdump (티씨피덤프): 주로 리눅스 터미널(CLI) 환경에서 사용되는 패킷 캡처 도구입니다. 명령어 형태로 실행되며, 도커(Docker) 컨테이너 내부와 같이 화면 그래픽이 없는 환경에서 패킷을 잡아 파일(.pcap)로 저장할 때 유용하게 쓰입니다.
- tshark (티샤크): Wireshark의 텍스트(터미널) 버전입니다. Wireshark의 분석 기능을 커맨드 라인 환경에서 사용할 때 활용합니다
4. 패킷
- 패킷 : 헤더 + 데이터 === 디지털임! 0과 1 비트로 이루어지고 실제 전송은 L1 에서 일어남
HTTP - TCP - IP - 이더넷 (5432) - 전송 -> 유선(구리선, 광케이블) / 무선(전파의 아날로그 신호)
5. Docker
Hosting : 진짜 컴퓨터를 직접 운용
Virtual machine : 하나의 com 에서 여러 OS 통째로 가상화
**Docker : 컨테이너 기반의 가상화 플랫폼
- OS 전체 대신 필요한 환경만 경량 가상화
- 개발과 배포 환경의 동일성이 인기의 비결
- 내 컴퓨터에 설치하여 컨테이너를 실행하는 가상화 플랫폼.
- 가상머신과 유사하지만 다르다 (게스트 os 없이 호스트 리눅스만 존재함)
500
도커 이미지 : 컨테이너를 정의하는 읽기 전용 템플릿,
컨테이너 실행에 필요한 라이브러리 및 종속성 정의이자 1개 이상의 컨테이너 생성 가능
도커 컨테이너 : 인스턴스화(실행) 된 도커 이미지이자 실제로 동작하는 프로세스
도커 제한 조건 : 리눅스가 필요함
리눅스 컨테이너 : 리눅스의 독립된 공간에서 프로세스들이 실행되는 환경
- chroot 로 디렉토리 격리
- 가상머신이 아니고 컨테이너다 (cgrops(자원할당) + namespaces(각 컨테이너 격리))
- cgroups
- =Control groups = cpu, 메모리, 디스크, 네트워크 자원 할당
- 프로세스 트리, 사용자 계정, 파일시스템, IPC 격리 -> namespace isolation
Docker명령어
- docker ps -a
- docker images
- docker run -i -t --name hello ubuntu /bin/bash
- 우분투 설치 명령어 + 컨테이너로 쉘 실행 후 진입
- 우분투 리눅스 이미지 기반으로 hello 라는 이름의 컨테이너를 생성실행하고 동시에 bash 로 진입하는 명령어
- 우분투는 가장 light linux라 추가 Network tools 필요
- apt update
- apt install net-tools (ipconfig, netstat 등)
- apt install iputils-ping (연결상태, 지연 시간 측정)
- apt install traceroute (중간 라우더 경로, 구간별 지연시간)
- apt install tcpdump (오가는 패킷정보 분석)
Dockerfile
도커 환경에서 컨테이너 이미지를 만들기 위한 템플릿이자 레시피
- FROM: 바탕이 되는 베이스 이미지를 지정합니다. (예: FROM python:3 → 파이썬 3 환경을 기본으로 사용)
- ADD: 호스트 PC에 있는 파일을 도커 이미지 내부로 복사합니다. (예: ADD server.py server.py → 작성한 서버 코드를 복사)
- EXPOSE: 컨테이너가 외부와 통신할 포트 번호를 지정해 줍니다. (예: EXPOSE 80)
- ENTRYPOINT: 컨테이너가 시작될 때 기본적으로 실행할 프로그램이나 명령어를 지정합니다. (예: ENTRYPOINT ["python3", "server.py"] → 컨테이너 구동 시 파이썬으로 서버 파일 실행)
-> docker build 명령어를 통해 실제 도커 이미지로 빌드 됨.
-> docker exec 는 이미 만들어져서 실행 중인 도커 컨테이너 내부로 접속
Docker Networking 의 이해
- 내 컴퓨터 Ip <-> 도커 컨테이너 IP 주소 관계. 통신 흐름 이해호스트 PC 는 외부로 나가는 기본 게이트웨이 역할 수행. (컨테이너들과 호스트를 연결해 주는 가상 인터페이스가 바로 docker0 브릿지이다.)
- 호스트 PC 의 IP 에 별개로 격리된 가상의 내부 IP를 할당 받고
- 컨테이너에서 외부로의 통신 흐름 (NAT)
도커 컨테이너 -> 도커 브릿지 -> 호스트 PC -> 실제 물리적 공유기 -> 목적지 서버 - 이 과정에서 도커 내부망과 호스트가 속한 외부망 간의 연결을 위해 iptables및 NAT (네트워크 주소 변환) 기술 사용됨
- 외부에서 컨테이너로의 통신 흐름 (포트 포워딩)
-p 8080:80 옵션 등을 주면서 호스트 pc 의 8080포트로 들어온 요청을 도커 내부 컨테이너의 80 포트로 연결해주어 양방향 통신을 시키는 느낌 - 이후 컨테이너 내부 터미널로 진입 (docker exec)
ifconfig, netstat -rn , ping g 등의 명령어를 쳐서 컨테이너에 할당 된 IP 와 기본 게이트 웨이 확인 가능
'학교' 카테고리의 다른 글
| 데이터통신 3주차 공부내용 (0) | 2026.04.23 |
|---|---|
| 데이터통신 2주차 공부내용 (1) | 2026.04.23 |
| C언어 - Pointer, Array 정리 (0) | 2026.04.08 |
| 운영체제 CPU , 프로세스 , 프로세서, OS , 프로그래밍, 프로세싱 , 멀티프로그래밍, 타임쉐어링 정리 (2) | 2026.04.02 |
| 2025 SPG F.A.T.I 준비 3 (온라인 레이스 참여) (0) | 2025.08.13 |