1. Http? tcp/ip?
2. OSI 7 Layer
저희가 인터넷 주소창에 'www.google.com' 이라는 도메인 네임을 입력했다고 가정해 봅시다.
그럼 인터넷 창에선 www.google.com에 접속해 서비스를 받기위해 여러가지 포멧 형태가 일어나게 됩니다.
여기서 사용자가 www.google.com을 인터넷 주소창에 치는 모든 행위 작업들을
OSI 7 Layer 중 7계층인 응용계층(Application Layer)이라고 합니다.
여기선 서버에 보낼 데이터와 어떤 프로토콜 방식을 사용할지에 대한 헤더가 붙게 됩니다.
이런 것들을 패킷 이라고 하며, 저희가 브라우저에 주소를 입력한 후 엔터를 누르는 순간,
'브라우저(Application) -> 본인 컴퓨터 랜카드' 로 가기 까지 모든계층들을 지나가며 각 계층마다 패킷이 붙게 됩니다.
위 사진을 보시면 'Data' 부터 시작하여 점점 아래로 내려갈 수록 이것 저것 붙는것을 확인할 수 있습니다.
응용 계층에선 어떤 프로토콜로 통신할 지에 대한 헤더가 붙고,
다음 계층인 표현계층(Presentation Layer)에서는 암호화 또는 복호화 과정에 필요한 정보들이 붙습니다.
세션은 연결을 위한, 표현 계층은 에러제어 및 신뢰성 확보 등..... 여러가지 정보들이 패킷에 붙어 나가게 됩니다.
3. HTTP == TCP??
그럼 TCP의 특징은??
1. 연결지향적
2. 3 way handshaking 과 4 way handshaking 작업으로 인한 신뢰성 보장
3. 순서 보장
UDP는 서버에 데이터를 보내고 끝. 즉, 서버와 클라이언트가 서로 연결되지 않습니다.
다시말해서 서버가 살아있던, 죽어있던 신경안쓰고 해당 주소로 데이터를 보내고 확인도 안합니다.
그로 인해 3 way handshaking 작업도 없죠. 또한 순서가 보장되지 않습니다.
4. HTTP vs TCP Ssocket
정해진 규칙에 의거하여 클라이언트의 요청에 대한 정보를 제공해주고 연결을 끊을 것이냐?
아니면 규칙 이런거 없이 서로 계속, 영원히 연결을 유지할 것이냐?
그럼 TCP Socket통신으로 프로그래밍을 하고 클라이언트 데이터를 받고 서버에서 클라이언트 연결을 끊으면 HTTP 아니냐?
TCP Socket 통신과 Http 통신을 비교해 보겠습니다.
TCP Socket
위 패킷은 제가 JAVA로 만든 채팅서버를 다른 컴퓨터에 설치해 접속해본 결과입니다.
프로토콜을 보시면 TCP기반 S101을 사용하는걸 보실 수 있으며 아래 파랗게 블록되어 있는 부분이 제가 서버로 보낸 문자열입니다.
HTTP
이건 제가 C++로 만든 http서버 입니다. Http 기반 json 통신을 하는걸 알 수 있습니다.
다시말해서 일반적으로 프로그래밍에 사용하는 Socket 통신은 4계층에서 시작하여 패킷이 생성되고
Http통신의 경우 7계층부터 시작하여 패킷이 생성됩니다.
그럼 TCP Socket으로 Http 통신을 할 수 없는가??
다시한번 말씀드리지만 HTTP는 TCP로 이뤄져 있습니다.
때문에 둘 다 3 way handshaking 작업과 4 way handshaking 작업을 거칩니다.
'프로그래밍 > 웹, 네트워크' 카테고리의 다른 글
DNS에 대한 설명(디테일 하게....) (7) | 2021.03.29 |
---|---|
Web Server과 WAS의 차이점(MVC 모델링) 기초부터 설명해욧~ (1) | 2020.11.08 |
리틀 엔디언과 빅 엔디언 (0) | 2020.10.22 |
티스토리 마크다운 언어 쓰기(프로그래밍 코드 양식?) (0) | 2020.05.16 |
Restful에 대한 이해하기(Restful 특징) - 4 (0) | 2020.01.13 |
댓글