# TCP와 HTTP 정리
1. OSI 7 Layer 이해
- TCP와 HTTP가 완전히 다른 개념의 프로토콜은 아니다.
HTTP를 열어보면 TCP가 나오는 구조이다. 위의 그림을 보고 이해하면 쉽다.
보통 TCP는 4계층, HTTP는 7계층 이라는 말이 위의 계층을 이야기한 것이다.
2. OSI7Layer의 동작을 보면 아래와 같다.
- 사용자가 네이버에 접근하기 위해 naver.com 이라는 도메인을 입력하고 해당 사이트로 접근한다고 가정하자.
사용자가 네이버에 접근하기 위해 브라우저 주소창에 도메인 주소를 입력하거나, 검색사이트에서 검색하는 모든 행위를 OSI7계층에서 7계층인 응용계층(Application Layer)라고 한다. 이 과정에서 서버로 보낼 데이터와 어떤 프로토콜 방식을 사용할지에 대한 헤더 정보가 붙게 되고 이런 정보들을 패킷이라고 한다.
- 동작 과정을 보면 아래와 같다.
사용자(Client) → 브라우저 naver.com 입력 → 사용자의 컴퓨터 랜카드 까지 모은 계층을 지나면서 각 계층마다 패킷을 붙이게 된다.
- OSI7Layer header 정보는 아래와 같다.
아래의 그림처럼 각 계층이 지날때마다 헤더 정보를 담아서 전달한다.
- 좀 더 구체적인 그림은 아래와 같다.
위의 사진 정보를 보면 보내지는 Data를 시작으로 여러가지 계층별 정보가 함께 붙는것을 확인 할 수 있다.
각 계층별 역할이 존재 하는데 역할은 아래에서 확인 가능하다.
3. OSI7Layer 각 계층별 역할
- 계층 설명은 아래와 같다.
7 계층 (Application, 응용 계층)
- 전송단위 : data
- 프로토콜 : HTTP, SMTP, POP3, DNS, SSH 등
- 역할 : 사용자에게 직접 제공되는 서비스나 프로그램은 대부분 응용계층에 해당(브라우저, webapp 등등)
응용서비스를 네트워크에 연결해주는 역할
6계층 (Presentation, 표현 계층)
- 전송단위 : data
- 프로토콜 : JPG, MPEG, SMB, AFP 등
- 역할 : 데이터의 번역 및 암호화 수행, 데이터의 표현 방식에 관한 서비스 수행, 7계층으로부터 전달받거나 전송하는 데이터의 인코딩/디코딩 및 암호화 등 수행, 송신측과 수신측의 데이터의 형식을 정해준다. (PNG, JPEG 등)
송/ 수신자가 서로 다른 문자를 사용하는 경우 번역하여 일관된 데이터 전송을 수행하도록 돕는다.
5계층 (Session, 세션 계층)
- 전송단위 : data
- 프로토콜 : SSL, TLS, NetBIOS 등
- 역할 : 응용프로그램들 간의 통신관리 및 동기화 유지, 네트워크 상 양쪽 연결을 관리하고 연결을 지속 시켜주는 역할
통신 장치간의 상호 작용을 설정 및 유지하고 동기화 한다. 동시 송수신(Duplex), 반이중(Harf-Duplex), 전이중(Full-Duplex) 방식
세션 계층의 주요 기능으로는 다중화, 오류 복구, 데이터 교환 등이 있다. 예로 로그인 서비스를 보면 로그인을 통해 다양한 응용프로그램과 세션을 이루면서 데이터를 주고 받는다. 로그아웃시 까지 통신관리 및 동기화가 이루어진다.
4계층 (Transport, 전송 계층)
- 전송단위 : segment
- 프로토콜 : TCP, UDP 등
- 역할: 송신 측과 수신 측의 연결 설정 및 유지, Endpoint의 사용자들이 신뢰성 있는 데이터를 주고받게 해주는 역할
송/수신 측의 실질적인 연결을 설정하고 신뢰성 있는 통신이 가능하도록 한다. 전송 계층에서는 전체 메세지의 전송을 책임진다. 송/수신 프로세스 간의 연결을 설정한 뒤 오류 복구나 흐름 제어를 통해 안전하게 전체 메세지가 전달 될수 있도록 한다.
3계층 (Network, 네트워크 계층)
- 전송단위 : 패킷(packet)
- 프로토콜 : IP, ICMP, ARP, RIP, IGMP 등
- 관련 장치 : 라우터, L3 스위치
- 역할 : 데이터 전송 시 경로제어 및 인터네트워킹 수행, 네트워크 계층에서 주 역할은 최적의 경로를 선택하여 데이터 패킷을 전송하는 것이다. 데이터가 수신지 까지 도착하기 까지는 여러 시스템을 거치는데 이때 올바른 경로로 패킷이 가도록 라우팅 기능을 지원한다.
2계층 (Datalink, 데이터링크 계층)
- 전송단위 : 프레임(frames)
- 프로토콜 : Ethernet, 토큰링, ATM 등
- 관련장치 : 브릿지 or 스위치, MAC Adress
- 역할 : 오류제어, 순서제어, 흐름제어 수행, MAC 주소를 사용하여 신뢰성 있는 정보를 전송하는 역할을 한다.
Network Device가 가지고 있는 고유한 물리주소 MAC을 이용하여 데이터의 정확한 송수신 및 오류제어, 순서제어, 흐름제어를 수행한다.
1계층 (Physical, 물리 계층)
- 전송단위 : 비트 (bits)
- 프로토콜 : Modem, Cable, Fiber, RS-232C
- 관련장치 : 허브와 리피터, PC 모뎀
- 역할 : 전송매체를 통한 데이터 전송 및 데이터의 신호 변환, 물리계층은 전송매체를 통해 실제로 데이터를 전송하는 역할을 담당한다.
osi7layer flow device 검색해서 붙이기
- 끝 -