1. TCP/IP 5 계층 vs OSI 7 계층
OSI 표준 모형은 7계층으로 이루어져 있고 TCP/IP의 경우 5계층으로 이루어져 있다.
OSI 7계층은 1984년 이전에는 각 회사마다 표준 규격이 달랐기 때문에 이를 한 규격으로 묶을 통일하여 규격화의 필요성으로 인해 나오게 되었다.
TCP/IP의 경우 미국 국방부에서 정의한 네트워크 통신 표준 모델이다. 현재 우리가 사용하고 있는 산업 표준 네트워크 통신 모델은 TCP/IP이다. 그 이유는 OSI 모형보다 TCP/IP가 더 먼저 사용되었기 때문이다.
OSI 7계층에서의 차이점
TCP/IP와 OSI7 계층이 다른 점이 “애플리케이션 계층"을 어떻게 나누는가에 따라 조금 달라진다. TCP/IP의 경우 애플리케이션 계층 하나로 구분하고 있지만, OSI 7 계층의 경우 이 애플리케이션 계층을 세션계층, 프리젠테이션 계층, 애플리케이션 계층으로 구분하고 있다.
2. 애플리케이션 계층
애플리케이션 계층은 응용 프로세스를 사용하여 우리에게 직접적인 응용 서비스를 제공하는 계층이다.
애플리케이션 계층 구조
- 클라이언트 서버 구조
- 다수의 클라이언트가 특정 서버에 연결되어 있는 구조로, 주로 데이터와 애플리케이션은 서버에 구성되어 있어, 클라이언트의 요청에 따라 서버가 응답해주는 구조로 구성되어져 있ㅅ다.
- 장점
- 안정적이고 확장성이 크다.
- 단점
- 여러 클라이언트가 한 번에 요청 보내면 서버에는 병목 현상 발생
- 구현할 때 비용이 크다.

- P2P 구조
- 서버를 거치지 않고 클라이언트끼리 직접 통신하는 방식으로, 중앙 서버없이 컴퓨터간의 통신에서 사용되며, 각 연결된 컴퓨터는 피어라고 한다.
- 장점
- 각각 분산된 시스템을 제공하여 병목 현상이 발생하지 않다.
- 비교적 저렴하다.
- 단점
- 피어 수가 늘어나면 문제가 발생하게 된다.

애플리케이션 계층 프로토콜
HTTP
- 하이퍼텍스트를 빠르게 교환하기 위한 프로토콜
- 특징
- 클라이언트 서버 구조
- 클라이언트는 서버에 요청을 보내고 응답을 대기한다.
- 무상태 프로토콜
- 서버가 세션 상태를 가지고 있지 않고 들어온 요청에 대해 단순히 응답을 보내는 역할만 수행하게 된다.
- 비연결성
- 실질적으로 통신하고 있는 클라이언트들과 연결을 하여 회선의 낭비를 방지한다.
- HTTP 메시지
- HTTP 메시지는 HTTP 애플리케이션 간에 주고 받은 데이터 블록들이다.
- HTTP 메시지의 헤더에는 내용과 의미를 설명하는 메타 정보가 들어가며, 바디에는 의도에 따라 선택적으로 구성될 수 있다.
- 단순함, 확장 가능
FTP
- FTP는 TCP/IP 네트워크 상에서 컴퓨터들이 파일을 교환하기 위한 프로토콜이다.
SMTP
- SMTP는 인터넷에서 매일을 전송하기 위한 프로토콜이다.
DNS
- DNS(도메인 네임 시스템)이 사람이 읽을 수 있는 도메인 이름(www.hanamon.kr)을 IP 주소로 변환하는 시스템이다.
3. 프리젠테이션 계층
프리젠테이션 계층은 데이터의 표현과 암호화 및 코드 간의 변역을 담당한다. 즉, 암호화, 복호화 과정과 데이터가 텍스트인지 이미지 파일인지 구분하여 우리가 볼 수 있는 형태로 표현하게 되어, 파일간의 확장자를 결정하게 된다.
프리젠테이션 계층 프로토콜
- SSL
- Secured Socket Layer로 서버 또는 웹사이트 간에 암호화된 연결을 수립하게 된다.
- ASCII
- 특수문자, 숫자, 문자에 번호를 이용하여 컴퓨터가 처리하기 쉽게 만든 코드
4. 세션 계층
세션 계층은 서버의 상태 정보를 유지하는 기술로, 일정 시간동안 같은 사용자로부터 들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 일정하게 유지시키는 기술.
세션 계층 역할
- 세션 연결 및 해제
- 세션 유지
- 세션전송 중단시 복구
세션 계층의 통신방식
- Simplex
- 단반향 통신 방식
- ex ) 라디오와 같이 한 방향으로만 통신하는 것.
- Half duplex
- 반이중 통신 방식, 양방향 통신은 할 수 있으나 한번에 한쪽 방향으로만 통신이 가능한 방식
- ex ) 무전기와 같이 한쪽 방향으로만 통신할 수 있는 형태
- Full duplex
- 전이중 통신 방식, 두 기기가 동시에 송수신을 할 수 있는 구조
- ex ) 전할때, 내가 말함과 동시에 상대방의 말을 들을 수 있다.
5. 전송 계층
전송 게층은 송신자와 수신자를 연결하는 통신 서비스를 제공하며, 애플리케이션과 인터넷 계층 사이의 데이터가 전달될 때의 중계 역할을 하게 된다.
Transport 계층에서 사용되는 프로토콜은 주로 TCP와 UDP가 존재하는데, TCP의 경우 연결지향 프로토콜로 신뢰성이 좋다는 장점이 존재하고 UDP의 경우 비연결형 프로토콜로, 신뢰성은 떨어지지만 빠른 서비스를 제공한다는 장점이 있습니다.
TCP
TCP의 경우 인터넷 망에서의 핵심 프로토콜로 연결지향 프로토콜을 사용한다는 특징이 존재합니다. 연결지향의 특징으로 흐름제어, 혼잡제어, 오류제어를 하여 신뢰성 있는 서비스를 제공하게 되고 이를 위해 회선방식을 가상회선 패킷 교환 방식을 사용하게 됩니다.
접속과 해제
- 3 Way Handshake
- SYN 단계
- 클라이언트는 서버로 클라이언트의 ISN을 담아 SYN을 보낸다.
- SUN + ACK 단계
- 서버는 클라이언트의 SYN을 수신하고 서버의 ISN을 보내며 승인번호로 클라이언트의 ISN + 1을 보낸다.
- ACK 단계
- 클라이언트는 서버의 ISN + 1한 값인 승인번호를 담아 ACK를 서버에 보낸다.
- ISN을 사용하는 이유
- 우리가 연결을 할 때 유한한 포트 내에서 이루어지게 된다.
- 즉, 이 포트를 재사용 할 수 있기 때문에 이를 구분하지 않으면 이전에 오는 패킷인지 현재 연결된 패킷인지 구분할 수 없다.
- SYN
- seq port(2915269997) 전송
- SYN + ACK
- ack port(2915269997 + 1) → 승인 번호
- seq port(1458477026)
- ACK
- ack port(1458477026 + 1) → 승인 번호
TCP/IP에서 두 호스트간 논리적 연결을 위한 과정


- 4 Way Handshake
- 1번
- 먼저 클라이언트가 연결을 닫으려 할 때, FIN으로 설정된 세그먼트를 보낸다.
- 그리고 클라이언트는 FIN_WAIT_1 상태로 들어가고 서버의 응답을 기다린다.
- 2번
- 서버는 클라이언트로 ACK라는 승인 승인 세그먼트를 보낸다. 그리고 CLOSE_WAIT 상태에 들어간다.
- 클라이언트가 세그먼트를 받게 되면 FIN_WAIT_2 상태에 들어가게 된다.
- 3번
- 서버는 ACK를 보내고 일정 시간 이후에 클라이언트에 FIN 세그먼트를 전송한다.
- 4번
- 클라이언트는 TIME_WAIT 상태가 되고 다시 서버로 ACK를 보내서 서버는 CLOSED 상태가 된다.
- 이후 클라이언트는 어느 정도의 시간을 대기한 후 연결이 닫히고 클라이언트와 서버의 모든 자원의 연결이 해제된다.
- TIME_WAIT을 하는 이유
- 지연 패킷이 발생할 경우를 대비하기 위함 → 다 받지 못하고 닫으면 데이터 무결성에 위배될 수 있다.
- 두 장치가 연결이 닫혔는지 확인하기 위해서

패킷 전송
- 가상회선 패킷 교환 방식
- 순서
- 설정 단계
- 요청 패킷과 확인응답 패킷으로 각 라우터에 있는 포워딩 테이블을 설정하면서 경로를 미리 설정하게 된다.
- 데이터 전송 단계
- 포워딩 테이블과 경로 설정이 완성되면, 패킷을 순서대로 전송 가능하다.
- 해제 단계
- 발신지에서 목적지로 패킷을 보낸 뒤, 연결 해제 특수 패킷을 전송한다.
- 모든 라우터 테이블의 정보를 삭제한다.

가상회선 패킷 교환 방식은 각 패킷에는 가상회선 식별자가 포함되며, 모든 패킷을 전송하면 가상회선이 해제되고 패킷들은 전송된 순서대로 도착하는 방식을 말한다.
가상회선 방식의 경우 매번 Path를 설정해야 하는 과정을 필요로 한다. 따라서, 작은 데이터 보다는 큰 데이터에 적합하다.
역할
- 흐름제어
- 서로 전송량이 다른 디바이스간 적절하게 전송 속도를 맞춰주는 것을 말한다.
- 송신측 === 수신측 → 아무런 문제 없음
- 송신측 < 수신측
- 효율이 그리 좋지 않다.
- 송신측 > 수신측
- 버퍼가 있을 때
- 꽉 찼다면 → Flow Control을 통해 그만 보내라는 신호
- 모두 처리 되었다면 → Flow Control을 통해 이제 보내라는 신호
- 버퍼가 없을 때 → 그냥 폐기
- 처리 방법
- Stop & Wait
- Sliding Window



- 에러제어
- 해당 데이터가 모두 오지 않았거나 오류가 있다면 다시 데이터를 보내주는 것을 말함
- 처리 방법
- FEC ( Foward Error Correction )
- 에러가 났을때, 다시 전송 요구를 하는게 아닌 스스로 에러를 고치는 것. ( 에러 정정 코드 )
- 해밍 코드를 사용한다.
- 너무 많이 에러나면 ❌ → 간헐적으로 에러가 났을 때
- BEC ( Backward Error Correction )
- 에러가 났을때, 송신단으로 부터 다시 전송해달라고 요구.
- 에러가 동시에 많이 발생 되었을 때
- 망 내 부하가 심해짐
- 대표적으로 Stop-and-Wait, Go-Back-N을 사용한다.
- 혼잡제어
- 송신측의 데이터 전달과 네트워크의 데이터 속도 차이를 해결하기 위한 기법
- 해결
- AIMD
- Slow Start
- Fast Retransmit
UDP
비접속형 프로토콜로, 전송되는 각각의 데이터는 독립성을 유지하게 된다. UDP의 가장 큰 특징은 흐름제어, 오류제어, 혼잡제어를 수행하지 않는 것이다. 따라서, 신뢰성은 없지만 빠른 서비스를 제공하는 것이 특징이다. 회선방식으로는 데이터그램 패킷 교환 방식을 사용하고 있다.
패킷 전송
- 데이터그램 패킷 교환 방식

데이터그램 패킷 교환 방식은 신뢰성 없는 서비스를 제공하는 UDP에서 주로 사용된다. 데이터그램 패킷 교환 방식의 경우 경로가 생성되지 않으며 패킷은 독립적으로 다루어진다.
따라서, 패킷의 순서는 보장되지 않고 Path의 경로는 패킷마다 변경될 수 있다. 수신시, 도착한 패킷간의 순서를 재정렬하고 패킷을 붙이는 과정이 추가된다.
6. 네트워크 계층
망과 망을 연결하고 패킷화와 라우팅과 포워딩을 담당한다.
책임
1. 패킷화
네트워크층의 한 가지 의무는 근원지로부터 목적지까지 변경이나 활용 없이 페이로드를 운반하는 것이다.
따라서, 페이로드에 해더를 붙여 패킷을 만들고 (Encapsulation), 수신지에는 패킷에 헤더를 없애 (Decapsulation), 페이로드로 다시 만드는 역할을 한다.
2. 라우팅과 포워딩
네트워크층은 패킷이 근원지에서 목적지까지 갈 수 있도록 경로를 라우팅을 하고 포워딩을 할 수 있어야 한다
- 라우팅 → 최단 경로를 만드는 것
- 포워딩 → 해당 경로로 보내는 것
역할
- 오류제어
- 인터넷 속도를위해 오류제어는 하지 않는다.
- 에러가 나면 ICMP 프로토콜이 별도 수행
- 흐름제어
- 흐름제어를 하지 않고 전송 계층에서 흐름 제어 수행
프로토콜

- IP → 데이터 전송시 사용되는 프로토콜
- ICMP (Internet Control Message Protocol)
- 패킷 전송 중 에러 발생시, 에러 발생 원인을 알려주거나, 네트워크 상태를 진단해주는 기능 제공
- IGMP (Internet Group Manage Protocol)
- TCP/IP 프로토콜이 동적 멀티캐스팅을 수행하기 위해 사용하는 표준 프로토콜
- ARP → IP 주소 to MAC 주소
7. 데이터링크 계층
데이터링크 계층은 인접 노드를 연결하는 회선이다. 인접 노드간의 데이터 전송 역할을 수행하게 된다. 이는 전선, 광섬유, 무선 등으로 실질적으로 데이터를 전달하며, 장치 간에 신호를 주고 받는 규칙을 정하는 계층이다.
역할
프레임 구성
다음 노드에게 메시지 ( 데이터 그램 )을 전송하기 전에 네트워크 층으로 부터 받은 패킷을 프레임으로 캡슐화

- Encapsulation
- 패킷에 해더를 붙이는 작업
- Decapsulation
- 패킷에 해더를 띄어내는 작업
오류제어

- 오류가 났다면 그냥 버린다. → TCP 오류제어와의 차이점
- 오류가 나지 않았다면 잘 받았다는 신호 ack를 보냄
- 따라서, ack를 받지 못했다면 수신자는 데이터를 받지 못함을 의미
- 그래서 이를 판단하기 위해 수신자는 Timer를 사용해, 해당 시간이 초과했다면 재전송
흐름제어
위와 동일
프로토콜
이더넷
이더넷은 가정과 건물과 같은 로컬 환경의 컴퓨터 및 기타 장치를 네트워크에 연결하기 위해 개발된 통신장치이다. ( 일반적으로 LAN, WAN에서 많이 사용된다. )

현재 UTP 케이블 및 광케이블을 사용해, 스타형 구조가 많이 사용되고 있다.
- 인터넷? 이더넷?
- 인터넷은 네트워크로, 이더넷은 네트워크를 이루는 컴퓨터들의 통신 수단 중 하나이다.
- 인터넷은 교통, 이더넷은 도로로 치환해서 생각하면 된다. ( 교통은 무조건 도로로 이루어지는 것은 아님 )
- 데이터 송수신 방법
- 반이중화 통신 ( half duplex )
- CSMA/CD
- 이 구조는 버스 구조에서 구성 될 수 있는 것.
- A와 C가 보낸 데이터가 충돌이 났다면, 충돌 된 데이터는 버스 구조에서 사방으로 퍼지게 될 것!
- 따라서, A는 시점 & C는 시점에서 데이터가 깨짐을 감지한다.
- 충돌을 감지하면 이후의 메시지는 전송 중지 시키고 바로 재전송!
- 충돌된 데이터는 완전히 파괴 시키고 Jamming Signal을 보내고 다시 해당 데이터를 전송시킨다.
- 전이중화 통신 ( full duplex )


내가 보낸 데이터가 성공적으로 잘 전송 되었는가를 직접 확인하는 모델이다. 즉, 충돌을 감지하면 충돌된 시그널은 완전히 폐기하고 Jamming Signal을 보내고 다시 해당 데이터를 전송시킨다.

양쪽 통신 장치가 동시에 송수신할 수 있는 방식을 말한다. 이는 송신로와 수신로로 나누어 데이터를 주고받으며 현대의 고속 이더넷 방식으로 채택되었다.
이더넷 스위치를 사용하여 전용회선을 사용하기 때문에 충돌과 전체 대역폭을 사용할 수 있다.
8. 데이터링크 계층
물리 계층에서는 주로 전기적, 기계적, 기능적인 특성을 이용한 통신 케이블로 프레임을 0과 1인 비트로 변환하여 전송하거나, bit로 오는 것을 프레임으로 변환하기도 한다.
유선
- 트위스티드 페어 케이블
- UTP 케이블 ( Unshielded Twisted Pair Cable )
- STP 케이블 ( Shielded Twisted Pair Cable )
- 동축 케이블
- 광 케이블
무선
- Radio wave ( 전파 )
- Micro wave ( 마이크로파 )
- Infraed ( 광 )