
OSI 7계층 모델은 네트워크 통신을 계층적으로 나눈 개념적 모델로, 서로 다른 시스템 간의 상호 운용성을 보장하기 위한 국제 표준입니다.
| 계층 | 이름 | 주요 기능 | 예시 프로토콜 / 장비 |
|---|---|---|---|
| 7 | Application Layer (응용 계층) | 사용자와 가장 밀접하게 연결되어 있으며, 응용 프로그램이 네트워크 기능을 사용할 수 있게 해줍니다. | HTTP, FTP, SMTP, POP3 |
| 6 | Presentation Layer (표현 계층) | 데이터 포맷(부호화, 암호화, 압축)을 변환하여 서로 다른 시스템 간 호환성 제공 | JPEG, MPEG, TLS, ASCII ↔ Unicode 변환 |
| 5 | Session Layer (세션 계층) | 통신 세션의 설정, 유지, 종료를 담당 | NetBIOS, RPC, PPTP |
| 4 | Transport Layer (전송 계층) | 데이터의 신뢰성 있는 전송 보장, 오류 검출 및 복구, 흐름 제어 | TCP, UDP |
| 3 | Network Layer (네트워크 계층) | 논리적 주소(IP)를 기반으로 경로를 결정하고 패킷을 전달 | IP, ICMP, ARP, 라우터 |
| 2 | Data Link Layer (데이터 링크 계층) | 물리적으로 연결된 장치 간의 프레임 전송, MAC 주소 기반 | Ethernet, PPP, 스위치 |
| 1 | Physical Layer (물리 계층) | 전기적 신호 또는 광 신호를 통해 데이터 전송 | UTP 케이블, 광케이블, 허브 |
🧠 OSI 모델은 실제 구현체가 아니라 개념 모델입니다. 실전에서는 TCP/IP 4계층 모델이 더 많이 사용됩니다.
프로토콜은 컴퓨터나 네트워크 장치 간의 통신을 위해 정해진 약속이나 규칙입니다. 모든 장치는 같은 프로토콜을 따라야 통신이 가능합니다.
| 프로토콜 | 설명 | 계층 |
|---|---|---|
| HTTP/HTTPS | 웹 페이지 전송 (HyperText 전송) | 응용 계층 |
| FTP/SFTP | 파일 전송 (파일 서버 ↔ 클라이언트) | 응용 계층 |
| DNS | 도메인명을 IP로 변환 | 응용 계층 |
| TCP | 연결 지향형, 신뢰성 보장 (순서 보장, 재전송) | 전송 계층 |
| UDP | 비연결형, 빠르지만 신뢰성 낮음 (스트리밍, 게임) | 전송 계층 |
| IP | 각 장치에 IP 주소를 부여하고 라우팅 담당 | 네트워크 계층 |
| ICMP | 네트워크 상태 진단 (핑 테스트 등) | 네트워크 계층 |
| ARP | IP 주소 → MAC 주소 변환 | 네트워크 계층 |
IP 주소는 인터넷 상에서 장치를 식별하기 위한 고유 주소입니다.
2001:0db8:85a3:0000:0000:8a2e:0370:7334)| 구분 | 예시 |
|---|---|
| 사설 IP | 192.168.0.0 ~ 192.168.255.255 172.16.0.0 ~ 172.31.255.255 10.0.0.0 ~ 10.255.255.255 |
| 공인 IP | ISP에서 제공하는 인터넷 상 유효 주소 |
255.255.255.0 → 네트워크: 앞 24비트, 호스트: 마지막 8비트소프트웨어 공학은 체계적, 정량적, 반복 가능한 방식으로 고품질 소프트웨어를 개발·운영·유지보수하는 학문입니다.
| 방법론 | 특징 | 장점 | 단점 |
|---|---|---|---|
| 폭포수 모델 | 순차적, 문서 중심 | 관리 용이, 명확한 단계 | 변경 대응 어려움 |
| 애자일 모델 | 반복적, 사용자 피드백 중심 | 빠른 대응, 유연함 | 문서화 부족 가능성 |
| 스크럼(Scrum) | 스프린트 단위 반복 개발 | 팀 협업, 역할 명확 | 일정 관리 어려움 가능 |
| 구분 | 핵심 내용 요약 |
|---|---|
| OSI 7계층 | 네트워크 통신을 7단계로 나누어 구조화한 개념 |
| 프로토콜 | 데이터 전송을 위한 규칙의 집합 |
| IP 주소 | 네트워크 상 장치 식별자 (IPv4, IPv6, 서브넷, NAT) |
| 소프트웨어 공학 | 품질 높은 소프트웨어 개발을 위한 체계적 접근 |
네트워크와 소프트웨어 공학은 IT 개발자라면 반드시 이해하고 있어야 할 기본기입니다. 이 글을 통해 개념을 정리하고 현업 적용에도 도움이 되길 바랍니다!