반응형
네트워크 기본 개념과 TCP/IP 모델
Day 1: 네트워크 기본 개념
강의 내용:
- 네트워크 정의 및 구조
- 네트워크의 정의
- 네트워크 구성 요소 (호스트, 라우터, 스위치, 허브)
- 네트워크 종류 (LAN, WAN, MAN, PAN)
- 네트워크 토폴로지
- 버스형, 스타형, 링형, 메시형 토폴로지
- 각 토폴로지의 장단점
- 실제 네트워크 구성 사례
- 데이터 전송 방식
- 유니캐스트, 멀티캐스트, 브로드캐스트
- 각 방식의 사용 사례와 장단점
실습:
- 네트워크 구성 요소와 토폴로지 이해
### 실습: 네트워크 구성 요소와 토폴로지
1. 버스형, 스타형, 링형, 메시형 토폴로지의 구조를 그림으로 표현
2. 각 토폴로지의 장단점을 표로 정리
3. 실제 네트워크 구성 사례 조사 및 발표
Day 2: TCP/IP 모델 개요
강의 내용:
- TCP/IP 모델의 개요
- TCP/IP 모델의 역사
- TCP/IP 모델의 계층 구조 (네트워크 인터페이스, 인터넷, 전송, 응용)
- 네트워크 인터페이스 계층
- 데이터 링크 계층과 물리 계층의 역할
- Ethernet, Wi-Fi와 같은 네트워크 기술
- 인터넷 계층
- IP 프로토콜의 역할
- IPv4와 IPv6의 차이점
- 주요 프로토콜: ARP, ICMP
실습:
- TCP/IP 모델 각 계층의 역할 조사 및 발표
### 실습: TCP/IP 모델 각 계층의 역할
1. 네트워크 인터페이스 계층의 역할과 주요 프로토콜 조사
2. 인터넷 계층의 주요 프로토콜 (IP, ARP, ICMP) 사용 사례 조사
3. 각 계층의 역할을 표로 정리하여 발표
Day 3: 전송 계층
강의 내용:
- 전송 계층의 역할
- 데이터의 신뢰성 있는 전송 보장
- 포트 번호를 이용한 통신
- TCP 프로토콜
- 연결 설정 및 해제 (3-way handshake, 4-way handshake)
- 흐름 제어와 혼잡 제어 (윈도우 크기, 슬라이딩 윈도우, 혼잡 제어 알고리즘)
- UDP 프로토콜
- 비연결형 프로토콜의 특징
- UDP의 장점과 단점
- 사용 사례 (실시간 스트리밍, DNS 등)
실습:
- TCP 연결 설정 및 해제 과정 실습
# TCP 서버
import socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 12345))
server_socket.listen(5)
print("서버가 포트 12345에서 대기 중입니다.")
client_socket, addr = server_socket.accept()
print(f"{addr}와 연결되었습니다.")
data = client_socket.recv(1024)
print(f"받은 데이터: {data.decode()}")
client_socket.sendall(data)
client_socket.close()
server_socket.close()
# TCP 클라이언트
import socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('localhost', 12345))
client_socket.sendall(b"Hello, Server!")
data = client_socket.recv(1024)
print(f"서버로부터 받은 데이터: {data.decode()}")
client_socket.close()
Day 4: 응용 계층
강의 내용:
- 응용 계층의 역할
- 응용 계층의 주요 프로토콜 (HTTP, FTP, SMTP, DNS)
- 각 프로토콜의 특징과 사용 사례
- HTTP/HTTPS
- HTTP의 구조와 동작 원리
- HTTPS를 통한 보안 강화 (SSL/TLS)
- DNS
- DNS의 역할과 동작 원리
- 도메인 네임 시스템의 구성 요소 (도메인, 존, 레코드)
실습:
- HTTP 요청 및 응답 실습
# 간단한 HTTP 서버
from http.server import SimpleHTTPRequestHandler, HTTPServer
class MyHandler(SimpleHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header("Content-type", "text/html")
self.end_headers()
self.wfile.write(b"Hello, HTTP!")
server = HTTPServer(('localhost', 8080), MyHandler)
print("HTTP 서버가 포트 8080에서 대기 중입니다.")
server.serve_forever()
# HTTP 클라이언트
import requests
response = requests.get('http://localhost:8080')
print(f"응답 코드: {response.status_code}")
print(f"응답 본문: {response.text}")
Day 5: 네트워크 프로그래밍 기초 복습
강의 내용:
- 네트워크 프로그래밍의 기본 원리
- 소켓 프로그래밍의 개념과 중요성
- 소켓의 종류 (스트림 소켓, 데이터그램 소켓)
- Python에서의 소켓 프로그래밍
- Python 소켓 라이브러리 개요
- 소켓 생성, 바인딩, 청취, 연결, 데이터 전송 및 수신
- 고급 소켓 옵션
- 소켓 옵션 설정 (SO_REUSEADDR, SO_LINGER)
- 비차단 모드와 타임아웃 설정
실습:
- TCP 및 UDP 소켓 프로그래밍 실습
# UDP 서버
import socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_socket.bind(('localhost', 12345))
print("UDP 서버가 포트 12345에서 대기 중입니다.")
while True:
data, addr = server_socket.recvfrom(1024)
print(f"{addr}로부터 받은 데이터: {data.decode()}")
server_socket.sendto(data, addr)
# UDP 클라이언트
import socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
message = b"Hello, UDP Server!"
client_socket.sendto(message, ('localhost', 12345))
data, addr = client_socket.recvfrom(1024)
print(f"서버로부터 받은 데이터: {data.decode()}")
client_socket.close()
Day 6: 프로젝트 준비
강의 내용:
- 프로젝트 주제 선정 및 요구사항 분석
- 네트워크 프로그래밍 프로젝트 주제 논의
- 팀 구성 및 역할 분담
- 프로젝트 계획 수립
- 프로젝트 목표 및 요구사항 정의
- 프로젝트 타임라인 설정
- 프로젝트 도구 및 환경 설정
실습:
- 프로젝트 계획서 작성 및 공유
### 실습: 프로젝트 계획서 작성
1. 프로젝트 목표 정의
2. 기능 명세서 작성
3. 개발 일정 및 마일스톤 설정
4. 역할 분담 및 작업 계획 수립
5. GitHub 저장소 생성 및 초기화
이 강의는 네트워크 기본 개념과 TCP/IP 모델, 소켓 프로그래밍의 기초를 다루며, 실습을 통해 이론을 실제로 적용해보고 네트워크 프로그래밍의 기초를 탄탄히 하는 것을 목표로 합니다. 각 주제별로 실습 예제를 통해 개념을 명확히 이해하고 실제 코드를 작성해보는 기회를 제공합니다.
반응형
'-----ETC2----- > 네트워크 프로그래밍' 카테고리의 다른 글
[네트워크 프로그래밍] Week 4: 네트워크 프로토콜 심화 (UDP 및 멀티캐스트) (0) | 2024.06.04 |
---|---|
[네트워크 프로그래밍] Week 3: 네트워크 프로토콜 심화 (TCP) (0) | 2024.06.04 |
[네트워크 프로그래밍] Week 2: 소켓 프로그래밍 기초 및 고급 소켓 옵션 (0) | 2024.06.04 |
[네트워크 프로그래밍] 고급 네트워크 프로그래밍 교육과정 (20주) (1) | 2024.06.03 |
[네트워크 프로그래밍] 고급 네트워크 프로그래밍 교육과정 (20주) (0) | 2024.06.02 |