<목차>
1. OSI 7계층
1.1 TCP/IP 4계층
2. TCP 통신
2.1 HTTP
2.2 TCP 연결을 설정하는 과정 3-way-handShake
2.3 TCP 연결을 종료하는 과정 4-way-handShake
1. OSI 7계층
OSI 7계층(Open Systems Interconnection Model)은 네트워크 통신을 구조화하고 이해하기 위해 국제 표준화 기구(ISO)가 정의한 참조 모델입니다.
각 계층은 특정한 역할을 담당하며, 통신 과정에서 계층 간의 상호작용을 정의합니다.
OSI 모델
OSI 모델은 1980년대에 처음 제안되었고, 네크워크 통신을 일곱 개의 계층으로 나누어서 각
계층이 담당하는 역할을 명확히 정의함.
1. 물리적 계층
데이터의 물리적 전송, 랜선 등 물리적인 전송
단순히 데이터를 전달하는 하드웨어적 연결
2. 데이터 링크 계층
물리적 계층의 신호를 이해 가능한 데이터 프레임으로 변환하는 계층
식별자 :MAC주소
네크워크 장치에 고유하게 부여된 Mac Address를 사용
MAC Address : 네크워크 장치가 네트워크에서 자신을 식별하기 위해 사용하는 고유한 식별자. 네트워크의 각 장치, 예를 들면 컴퓨터, 스마트폰의 네트워크 인터페이스 카드에는 고유한 MAC주소가 부여됨.
이 주소는 제조 단계에서 네트워크 장치에 할당되며, 주로 48비트 길이의 16진수로 표현 됩니다.
3. 네트워크 계층
데이터를 "목적지" 까지 전달하는 역할
전송 단위 : 패킷 => 네트워크 계층에서 데이터를 작은 덩어리로 나눈 것
각 패킷은 네트워크를 통해서 독립적으로 전송, 그리고 목적지에서 다시 조합됨.
식별자 : 196.128.0.1 같은 형식의 주소
라우팅 : 데이터를 전달할 최적의 경로를 설정하는 과정
네트워크 계층에서 라우터(Router)라는 장치가 이 작업을 수행합니다.
4. 전송 계층
데이터의 전송 방식을 관리, 프로그램 간에 데이터를 전송합니다.
전송 단위 : 전송 계층에서의 데이터를 작은 조각 나눈 것이 세그먼트
식별자: 포트번호
=> 80(웹 서버 포트), 25(이메일 서버 포트), 443 등등...
=> 포트 번호는 데이터를 어떤 프로그램이 사용할지 식별하는 역할
전송은 방식은
TCP 와 UDP로 형식으로 나뉘게 됩니다.
- TCP : 신뢰성 있는 전송을 보장. 데이터가 순서대로 도착하고, 손실없이 최대한 전송되도록 하는 역할
- UDP : 빠른 전송. 신뢰성은 낮은데, 실시간 전송이 필요한 상황에 적합. => 스트리밍 서비스, 온라인 게임
5. 세션 계층
역활 : 응용 프로그램간의 연결 설정, 유지, 종료
전송 단위 : 메세지
특징 : TCP/IP 세션 연결 및 관리
6. 표현 계층
역할 : 데이터의 인코딩/디코딩, 암호화 , 압축 등 => 데이터의 변환.
=> hello world => 0010001 => hello world
전송 단위 : 메세지
특징 : 응용 계층이 이해할 수 있도록 데이터를 변환.
7. 응용 계층
역할: 사용자와 네트워크 간 인터페이스 제공 => HTTP, FTP등 사용
전송 단위 : 메세지
특징 : 사용자가 네트워크를 직접적으로 사용할 수 있는 환경 제공
현대에 와서는 이 7계층을 좀더 단순화 하여 TCP/IP 4계층이 나오게 되었습니다.
1.1 TCP/IP 4계층
OSI 모델을 좀 더 단순화한 계층 으로서
1. 네트워크 인터페이스 계층 (Network Access Layer)
OSI의 물리 계층(1계층) + 데이터 링크 계층(2계층)을 포함.
실제 하드웨어와 네트워크 간의 데이터 전송 담당.
2. 인터넷 계층 (Internet Layer)
OSI의 네트워크 계층(3계층)에 해당.
IP(Internet Protocol)와 같은 프로토콜이 동작하며, 데이터 패킷의 주소 지정과 라우팅 담당.
3. 전송 계층 (Transport Layer)
OSI의 전송 계층(4계층)과 유사.
TCP와 UDP와 같은 프로토콜이 동작하며, 데이터의 신뢰성과 흐름 제어를 담당.
4. 응용 계층 (Application Layer)
OSI의 세션 계층(5계층), 표현 계층(6계층), 응용 계층(7계층)을 통합.
HTTP, FTP, SMTP 등 응용 프로그램에서 사용하는 프로토콜이 포함.
2. TCP 통신
우리가 통신을 서버와 통신을 할때는 반드시 한번의 요청에 한번의 응답이 오고갑니다. 주로 HTTP 프로토콜을 이용하는데
그과정에 응답과 요청 그리고 서버와의 연결과정을 3-way-handShake 서버와의 연결종료 과정을 4-way-handShake 으로 사용하는데 이를 사용하는 이유는
신뢰있는 통신 => 데이터의 정확한 전송과 순서를 위해 확실히 준비
연결 관리 => 연결을 설정하고 종료하는 과정에서 데이터 손실 및 오류를 최소화,
안정적인 네트워크 통신을 유지하기 위함입니다.
2.1 HTTP(HyperText Transfer Protocol)
웹 브라우저와 서버 간의 데이터 전송을 위한 프로토콜입니다. 주로 웹 페이지, 이미지, 동영상 등 다양한 리소스를 전송하는 데 사용되며, 클라이언트-서버 모델을 기반으로 동작합니다.
프로토콜
네트워크에서 데이터를 주고받는 규칙이나 절차
네트워크 상에서 장치들이 서로 통신하기 위해서 따라야 하는 일종의 "규칙"
우리가 대화할 떄, 문법을 따라야 서로 이해할 수 있는 것 처럼,
컴퓨터와 네트워크 장치들고 프로토콜을 따라야 올바르게 통신할 수 있음.
HTTP 상태 코드
HTTP 의 응답에서 서버는 요청 결과를 상태 코드로 클라이언트에 전달합니다.
1XX: Informational(정보 제공)
임시 응답으로 현재 클라이언트의 요청까지는 처리되었으니 계속 진행하라는 의미입니다. HTTP 1.1 버전부터 추가되었습니다.
2XX: Success(성공)
클라이언트의 요청이 서버에서 성공적으로 처리되었다는 의미입니다.
3XX: Redirection(리다이렉션)
완전한 처리를 위해서 추가 동작이 필요한 경우입니다. 주로 서버의 주소 또는 요청한 URI의 웹 문서가 이동되었으니 그 주소로 다시 시도하라는 의미입니다.
4XX: Client Error(클라이언트 에러)
없는 페이지를 요청하는 등 클라이언트의 요청 메시지 내용이 잘못된 경우를 의미합니다.
5XX: Server Error(서버 에러)
서버 사정으로 메시지 처리에 문제가 발생한 경우입니다. 서버의 부하, DB 처리 과정 오류, 서버에서 익셉션이 발생하는 경우를 의미합니다.
http 요청 메세지
- Host: 요청 대상 서버의 호스트 이름
- user-Agent: 클라이언트의 정보(브라우저, os등) => chrome, window
- Accept: 클라이언트가 수신 가능한 데이터 형식
- Content-Type: 요정 본문의 데이터 형식
- Authorization: 인증 정보
2.2 TCP 연결을 설정하는 과정 3-way-handShake
TCP 연결을 설정하는 과정
1. SYN : 클라이언트가 서버에 연결 요청을 보내며, SYN 패킷을 전송
2. SYN-ACK : 서버가 클라이언트의 요청을 수락하고, SYN + ACK 패킷을 전송
3. ACK : 클라이언트가 서버의 연결 응답을 확인하고, ACK 패킷 전송하며 연결을 확립함.
2.3 TCP 연결을 종료하는 과정 4-way-handShake
1. FIN: 클라이언트 또는 서버가 연결을 종료하기 위해 FIN 패킷 전송
2. ACK: 상대방이 FIN 패킷 수신, ACK 패킷을 전송하여 종료 요청 확인.
3. FIN: 상대방이 종료하기 위해 FIN 패킷을 전송.
4. ACK: 처음 종료 요청을 보낸 쪽이 FIN 패킷을 수신. ACK 패킷 전송 후 연결 종료.