HTTP

HTTP 02. TCP & UDP

shin96bc 2022. 6. 28. 21:57

(1) 인터넷 프로토콜 스택의 4계층

애플리케이션 계층 - HTTP, FTP
전송계층 - TCP, UDP
인터넷 계층 - IP
네트워크 인터페이스 계층(LAN 카드, LAN 드라이버 등을 포함)

(2) TCP( Transmission Control Protocol ) 

     1) TCP 의 특징

          <1> 연결지향 - TCP 3 way handshake(가상 연결)

          <2> 데이터 전달 보증

          <3> 순서 보장

          <4> 신뢰할 수 있는 프로토콜

          <5> 현재는 대부분 TCP 사용

 

     2) TCP 3 way handshack( 논리적인 연결 )

          <1> TCP 는 통신을 할때 클라이언트 에서 "SYN" 이라고 하는 접속 요청을 보냅니다.

          <2> 서버는 그 SYN 를 받아서 그 SYN 과 함께  요청 수락을 의미하는 "ACK" 를 보냅니다.

          <3> 그 다음에 클라이언트에서 요청 수락이 확인되면 ACK 와 함께 데이터를 전송할 수 있게 됩니다.

     

     3) 데이터 전달 보증

          <1> 어떻게 데이터 전달이 보증되는가 하면, 클라이언트에서 데이터를 전송하면 서버에서 데이터를

                  잘 받았다고 알려주기 때문에 데이터가 잘 전달되었는지 알 수 있습니다.

          <2> 만약 데이터 전달에 실패했다면 서버에서 아무 응답도 없기 때문에 전송 실패를 인지할 수 있습니다.

     

     4) 순서 보장

          <1> 패킷을 전송할 때 1, 2, 3 으로 쪼개서 보냈을 때, 서버에 1, 3, 2 순서로 도착했다면 서버에서

                 1번 패킷 뒤쪽을 다 버리고 클라이언트에게 2번 패킷부터 다시 보내라고 요청을 보냅니다.

 

(3) UDP( User Datagram Protocol ) 

     1) UDP 의 특징

          <1> 하얀 도화지에 비유할 수 있습니다.(기능이 거의 없습니다.)

          <2> 비연결지향

          <3> 데이터 전달이 보장되지 않습니다.

          <4> 순서가 보장되지 않습니다.

          <5> 단순하고 빠릅니다.

          <6> IP 와 거의 같습니다. IP 에 PORT 와 체크섬 정도만 추가된 것이라고 생각하면 됩니다.

          <7> 애플리케이션에서 추가 작업이 필요합니다.

 

     2) UDP 를 왜 사용하는가?

          <1> TCP 같이 안전하고 좋은 프로토콜이 있는데 왜 UDP 를 사용할까요??

                 그 이유는 UDP 만의 장점이 있기 때문입니다.

          <2> 먼저 TCP 는 다 좋지만, 3 way handshack 를 하는데 시간도 걸리고, 전송 데이터 이외에도

                 여러가지 데이터가 추가되기 때문에 무겁고, 속도를 더 빠르게 하기가 어렵습니다.

                 이미 많은 부분 구축이 되어 있어서 내 마음대로 최적화를 시키기도 어렵습니다.

          <3> 그럴때 사용하는 것이 UDP 입니다. TCP 는 그냥 그대로 사용하고, UDP 를 내가 원하는대로

                 최적화해서 사용하면 됩니다. UDP 는 아무것도 만들어지지 않았기 때문에 내가 직접 애플리케이션

                 레벨에서 뭔가를 만들어 낼 수가 있습니다.(그래서 최근에 이 UDP 가 각광받고 있습니다.)

 

 

참고자료:

인프런 -> 김영한 모든개발자를 위한 HTTP 웹 기본지식

https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC