일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- static 예제
- 사용자 데이터그램 프로토콜
- 다중 모달창
- GROUP BY
- 깃 명령어
- IP
- Java
- AOP란?
- 상속
- 추상 메서드
- Servlet 맵핑
- 싱클톤패턴
- static
- 스프링 모달창
- 객체협력
- 모달창 여러개
- 리스트 모달창
- spring annotation
- oracle 연동
- SUB Query
- static메서드
- 오라클 비교연산자
- 템플릿
- 형변환
- order by
- 이클립스 오라클 연동
- downcasting
- singleton
- react
- 다운캐스팅
- Today
- Total
모든지 기록하자!
[Network] TCP , UDP 본문
IP의 단점인 비연결성과 비신뢰성 등을 해결하기 위해 TCP를 사용한다.
Hello world라는 메시지를 전송하면 SOKET 라이브러리를 이용해 OS계층으로 전달, OS계층에서는 메시지 데이터에 TCP 정보를 포함시키고 TCP정보를 포함하는 IP 패킷을 생성한다. IP 패킷은 네트워크 인터페이스를 통해 전송한다.
TCP의 특징
전송 제어 프로토콜 (Transmission Control Protocol)
TCP는 웹 브라우저들이 월드 와이드 웹(www)에서 서버에 연결할 때 사용되며, 이메일 전송이나 파일 전송에도 사용된다. 신뢰할 수 있는 프로토콜로 현재는 대부분 TCP를 사용한다.
1. 연결지향 - TCP 3way handshake(가상연결)
TCP 프로토콜의 작동은 크게 세 가지 흐름으로 구분하며 연결 생성 -> 자료 전송 -> 연결 종료이다.
신뢰성 있는 연결이 생성돼야 하며, 그 후 자료를 전송하고, 마지막으로 연결을 종료하면서 할당된 자원을 반납한다.
연결을 생성하기 위해 TCP 3way handshake를 사용 하며 SYN , SYN+ACK , ACK로 3번 데이터를 주고받아 연결 확인 후 데이터를 전송한다. TCP 3way handshake는 물리적인 연결이 아니라 논리적 연결이다.(가상연결)
2. 데이터 전달 보증
클라이언트에서 서버에 데이터를 전송하면 서버에서는 데이터를 받았다면 클라이언트로 응답을 해준다.
3. 순서 보장
TCP는 IP와는 다르게 전송 제어 정보 , 순서 정보 등을 포함하고 있기 때문에 순서가 보장된다.
TCP는 데이터 스트림으로부터 데이터를 받아들여 이것을 청크 단위로 분할한 뒤 TCP 헤더를 덧붙여 TCP 세그먼트를 생성한다. TCP 세그먼트는 IP 데이터그램에 캡슐화되어 상대방과 주고받게 된다.
UDP의 특징
사용자 데이터그램 프로토콜(User Datagram Protocol)
UDP의 전송 방식은 너무 단순해서 서비스의 신뢰성이 낮고, 데이터그램 도착 순서가 바뀌거나, 중복되거나, 통보 없이 누락시키기도 한다. UDP는 일반적으로 오류의 검사와 수정이 필요 없는 애플리케이션에서 수행할 것으로 가정한다. UDP를 사용하는 네트워크 애플리케이션에는 DNS, IPTV, 음성 인터넷 프로토콜 (VoIP), 등등 그리고 많은 온라인 게임 등이 있다.
TCP와 UDP 비교
TCP는 데이터를 주고받을 양단간에 먼저 연결을 설정하고 설정된 연결을 통해 양방향으로 데이터를 전송하지만, UDP는 연결을 설정하지 않고 수신자가 데이터를 받을 준비를 확인하는 단계를 거치지 않고 단방향으로 정보를 전송한다.
- 신뢰성 - TCP는 메시지 수신을 확인하지만 UDP는 수신자가 메시지를 수신했는지 확인할 수 없다.
- 순서 정렬 - TCP에서는 메시지가 보내진 순서를 보장하기 위해 재조립하지만 UDP는 메시지 도착 순서를 예측할 수 없다.
- 부하 - TCP보다 UDP속도가 일반적으로 빠르고 오버헤드가 적다.
다음 게시물에서는 PORT와 DNS에 대해 알아보기로 하자.
참고 -
- 김영한 모든 개발자를 위한 HTTP 웹 기본 지식 강의
- https://ko.wikipedia.org/wiki/전송_제어_프로토콜
- https://ko.wikipedia.org/wiki/사용자_데이터그램_프로토콜
'Network' 카테고리의 다른 글
[Network] PORT (0) | 2022.01.11 |
---|---|
[Network] 인터넷 프로토콜(IP, Internet Protocol) (0) | 2021.12.26 |
[Network] 아파치 설정파일 분석 - httpd.conf , httpd-vhost.conf (0) | 2021.12.20 |
[Network] Virtual Host(가상 호스트)란? (0) | 2021.12.20 |
Apache와 Tomcat이란? (0) | 2021.12.14 |