티스토리 뷰
1. IP(인터넷 프로토콜)
IP 인터넷 프로토콜 역할
• 지정한 IP 주소(IP Address)에 데이터 전달
• 패킷(Packet)이라는 통신 단위로 데이터 전달
IP 패킷 정보
- 출발지 IP
- 목적지 IP
- Message
클라이언트 패킷 전달
출발지 IP 주소에서 패킷이 던져진다. 이 패킷은 노드끼리 전달되면서 목적지 IP를 찾는다.
서버 패킷전달
목적지 IP 주소에서 메세지(ok) 이 적힌 패킷을 던진다. 노드끼리 목적지 IP를 찾아가며 전달된다.
이 때 인터넷망이 복잡하기 때문에 서로 다른 곳으로 패킷이 전달 될 수 있다. 그래서 이는 한계가 있다.
IP 프로토콜의 한계
비연결성
PC 가 꺼진 상태에서도 전송된다.
- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
비신뢰성
- 중간에 패킷이 사라지면?
- 패킷 전달 순서 문제 발생
- 패킷의 용량이 클 때 메세지가 보통 1500byte가 넘으면 끊어서 보내는데 "Hello World!"를 "Hello" / "World"로 끊어서 보낸다 하면 노드들이 내부적으로 타다보면 "World"가 먼저 도착하는 경우가 생길 수 있다.
프로그램 구분
- 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면? (게임하기, 음악듣기..등)
TCP 프로토콜이 이러한 IP프로토콜의 한계점을 보완해준다.
1. TCP 와 UDP
인터넷 프로토콜 스택의 4계층
애플리케이션 계층 - HTTP, FTP |
전송 계층 - TCP, UDP |
인터넷 계층 - IP |
네트워크 인터페이스 계층 |
프로토콜 계층
IP 패킷은 IP와 관련된 정보와 함께 TCP 데이터 안에 메세지 데이터가 들어있다. 그리고 네트워크 인터페이스를 통해 LAN카드를 통해 서버로 갈 때 Ethernet frame이 포함되어 전달된다.
TCP / IP 패킷 정보
IP 패킷 | 출발지 IP, 목적지 IP, 기타..
TCP 세그먼트 | 출발지 PORT, 목적지 PORT, 전송제어, 순서, 검증정보...
이 안에 전송 데이터가 들어간다.
TCP 특징
전송 제어 프로토콜(Transmission Control Protocol)
- 연결지향 - TCP 3 way handshake (가상 연결)
- 데이터 전달 보증
- TCP IP에서는 데이터를 전송하면 서버에서 잘 받았다고 클라이언트에 응답해준다.
- 순서 보장
- 패킷1, 패킷2, 패킷3 순서로 전송했을 때 서버에 패킷1, 패킷3, 패킷2 순서로 도착했다면 서버는 패킷2를 다시 보내라고 클라이언트에 요청한다. (서버마다 최적화하는 방법이 다를 수 있지만 순서가 보장된다는 것을 알고 있으면 됨)
- 신뢰할 수 있는 프로토콜
- TCP 패킷 정보에는 전송제어, 순서, 검증정보가 들어있다.
- 현재는 대부분 TCP 사용
TCP 3 way handshake
1. SYN (SYNchronize) : 접속요청
클라이언트에서 서버로 SYN이라는 메세지를 보낸다.
2. ACK (ACKnowledge) : 요청수락
서버에서 ACK라는 메세지를 SYN을 보낸다.
3. ACK
클라이언트에서 ACK라는 메세지를 서버에 보낸다.
4. 데이터 전송
이러한 세번 메세지를 주고받는 방식으로 클라이언트와 서버가 서로간 신뢰할 수 있게된다. 이렇게 연결 후 그 다음에 4. 데이터 전송을 하게 된다.
eg. 만약 서버가 꺼져있어도 2.SYN+ACK 과정이 없어 연결이 안된다는 것을 알 수 있게된다.
참고. 마지막 3번 ACK 과정과 함께 데이터 전송도 가능하다.
중요한 것은 TCP 연결은 물리적으로 연결된 것이 아니라 논리적으로 연결된 것이라고 생각해야 한다. (가상 연결)
: 클라이언트에서 서버로 가는 도중 거쳐가는 수많은 노드(서버)들이 연결이 됐는지 안됐는지 알 수 없다.
UDP
UDP 특징 사용자 데이터그램 프로토콜(User Datagram Protocol)
- 하얀 도화지에 비유(기능이 거의 없음)
- 연결지향 - TCP 3 way handshake X
- 데이터 전달 보증 X
- 순서 보장 X
- 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
- 정리
- IP와 거의 같다. +PORT +체크섬 정도만 추가
- 애플리케이션에서 추가 작업 필요
TCP는 3way handshake과정이나 , 데이터 넣는 것 등 시간이 오래 걸릴 수 있는 이유로 이를 더 최적화하는 방안으로 UDP프로토콜이 각광받고 있다.
Reference
강의 | [인프런] 모든 개발자를 위한 HTTP 웹 기본 지식 - 김영한
'Network' 카테고리의 다른 글
[네트워크] HTTP 비연결성 (0) | 2022.07.07 |
---|---|
[네트워크] 모든 것은 HTTP기반으로 이루어져 있다. (HTTP 정의, 역사, 프로토콜 버전) (0) | 2022.07.05 |
[네트워크] 웹 브라우저 요청 흐름 (0) | 2022.07.04 |
[네트워크] URI, URL, URN 개념 및 URL 분석하기 (0) | 2022.06.30 |
[인터넷 네트워크] PORT, DNS (0) | 2022.06.27 |
- Total
- Today
- Yesterday
- 네트워크
- html
- 자바스크립트알고리즘
- 자바스크립트 비동기 처리
- 리액트네이티브
- 프로그래머스
- javascript
- 모두를 위한 컴퓨터 과학
- React
- cs50
- 프로그래머스 베스트앨범 자바스크립트
- github
- css
- 클로저
- 리액트
- 무한스크롤
- GIT
- network
- 모두를위한컴퓨터과학
- 자바스크립트 클로저
- 항해99
- 프로그래머스 자바스크립트
- 알고리즘자바스크립트
- 백준
- 실전프로젝트
- python
- 타입스크립트
- 자바스크립트
- React Query
- reactquery
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |