일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- git commit
- 객체지향
- await
- 비동기
- commit
- 자바스크립트
- callback
- 커밋
- serialization
- js
- 바닐라 자바스크립트
- 개발
- vscode
- 타입스크립트
- 프론트엔드
- OOP
- 런타임
- tar
- Deserialization
- typescript
- Async
- json
- javascript
- 역직렬화
- 비동기 처리
- ci/cd
- Dictionary
- vanilla javascript
- 절차지향
- Git
- Today
- Total
Hyundolog
HTTP 통신과 Socket 통신 본문
Question
평소 통신에 관련된 개념에 대해 설명하지 못하는 무지 상태에 있었습니다.
면접 준비중에 지나쳤었던 개념인 HTTP 통신과 Socket 통신에 대해 알아보고자 하였습니다.
Answer
소프트웨어에서의 통신은 클라이언트(Client)와 서버(Server)와의 교류라고 할 수 있습니다.
통신을 통해 데이터를 주고 받는데, 여러 장비들 사이에서 데이터 통신을 원할하게 하기 위한 통신 규약인 프로토콜(Protocol)에 대해 먼저 다뤄보도록 하겠습니다.
프로토콜
앞서 언급했던 대로, 프로토콜은 쉽게 말해 통신을 위한 규칙을 정의한 것으로 이해할 수 있습니다.
프로토콜은 구문(Syntax), 의미(Semantics), 타이밍(Timing) 의 요소를 가집니다.
쉽게 말해서, 어떠한 단위 및 방식으로 의미를 담아 어떠한 순서 및 속도로 설정할 것인지를 의미합니다.
프로토콜의 주요 기능은 캡슐화, 세분화와 재합성, 연결 제어, 오류 제어, 흐름 제어, 순서 제어, 동기화, 주소 설정, 다중화가 있습니다.
(간단히 알아만 두도록 하겠습니다.😅)
그렇다면, 대표적인 프로토콜이 어떤 것들이 있는지에 대해 알아보도록 하겠습니다.
- HTTP(HyperText Transfer Protocol) : 응용 계층. HTML을 통해 전송하는 규약
- TCP(Transmission Control Protocol) : 전송 계층. 정보 전달을 안전하고 신뢰성있게 하는 규약
- IP(Internet Protocol) : 네트워크 계층. 호스트 주소와 패킷 분할 및 합성 규약
- UDP(User Datagram Protocol) : 전송 계층. 빠른 데이터 전송을 위한 규약
- FTP(File Transfer Protocol) : 응용 계층. 파일을 주고 받기 위한 규약
- SMTP() : 전송계층. 인터넷에서 메일을 주고 받기 위한 규약
- SSL(Secure Socket Layer) : 표현 계층. 인증 및 암호화 규약
(이 또한 간단히 알아만 두도록 하겠습니다.😂)
HTTP 통신
HTTP 통신은 요청(Request)과 응답(Response) 방식으로 동작합니다.
요청과 응답 정보는 패킷에 넣어 보내게 되는데, 이 때 패킷은 Header와 Body로 구성됩니다.
비연결성과 무상태성의 성질을 가지고 있습니다.
쉽게 말해, 클라이언트와 서버는 각각 독립적이며 state 개념이 없어 서로 요청한 것들을 기억하지 않습니다.
이러한 단점을 보완하기 위해 사용하는 것이 Cookie와 Session 입니다.
HTTP 통신의 CRUD 메소드로는 각각 생성(POST), 조회(GET), 수정(PUT), 삭제(DELETE)를 사용합니다.
앞서 말한 것과 같이 필요할 때 클라이언트가 서버에 요청하여 데이터를 전달하는 방식으로 이해할 수 있습니다.
즉, 단방향 통신이라고 할 수 있습니다.
Socket 통신
Socket 통신은 HTTP 통신과 달리 실시간, 양방향 통신이 가능합니다.
클라이언트가 서버에 요청, 서버가 클라이언트에 요청이 모두 가능한 방식으로 이해할 수 있습니다.
예를 들면, 스트리밍 서비스 혹은 온라인 채팅을 떠올려볼 수 있습니다.
리뷰
- HTTP와 REST API의 관계 학습 필요
- OSI 7계층 및 TCP/IP에 대한 심화 학습 필요
'CS' 카테고리의 다른 글
CI/CD 란? (0) | 2022.07.26 |
---|---|
데이터 직렬화와 역직렬화 (0) | 2022.07.22 |
JSON과 Dictionary의 차이 (0) | 2022.07.21 |