Study/강의

모든 개발자를 위한 HTTP(2) - TCP, UDP

알굼 2023. 5. 16. 10:17
반응형

1. TCP, UDP

앞에서 봤던 거의 모든 문제를 TCP 통신이 해결해줌. 알아보자.

2. 인터넷 프로토콜 스택의 4계층

3. 프로토콜 계층

 

미국에 있는 친구에게 Hello, world! 메세지를 보내려고 하면
TCP 정보로 씌우고, 한칸 더 내려서 IP와 관련된 데이터를 씌움 -> IP 패킷 생성됨
LAN 카드 통해 나갈때 이더넷 프레임이 포함되어 나감.
이더넷 프레임? 랜카드에 포함된 맥주소(물리적 정보) 포함됨.

4. IP 패킷 정보

패킷: 패키지 + 버킷 

5. TCP/IP 패킷 정보

전송제어, 순서와 관련된, 검증관련 정보가 들어가서 IP만으로 해결되지 않았던  순서제어 문제 등이 해결됨.
그 안에 전송데이터 넣음.

6. TCP 특징

  • TCP: Transmission Control Protocol
  • 연결지향 - TCP 3 way handshake (가상연결)
    • 연결을 먼저 한 다음에 메시지 보낸다.
  • 데이터 전달 보증
    • 메세지 보냈는데 패킷 중간에 누락됐으면 내가 알 수 있음.
  • 순서 보장
  • 신뢰할 수 있는 프로토콜
  • 현재는 대부분의 애플리케이션에서  TCP 사용

7. 연결지향 - TCP 3 way handshake 란?

클라이언트, 서버 모두 SYN(접속할게), ACK(알았어) 해야하므로 서로 신뢰할 수 있음 
-> 총 3번 주고 받음.
연결되고 나서 데이터 전송함. (요즘은 3. ACK와 함께 데이터 전송하기도 함)

서버 꺼져있는데 클라이언트에서 접속하려 하면, 클라이언트에서 SYN 메세지 보냇을때 어? 응답이 없는데? 하고 연결이 안됨. Hello world 메세지 안보내게됨.

TCP/IP 연결은 클라이언트-서버 논리적으로 연결이 된거고 물리적으로 연결된건 아님.
그 사이에 수많은 노드들이 있는데 다 연결됐는지는 모름. 논리적으로 그렇다.
나를 위한 전용 랜선이 보장된건 아니다.

8. TCP 받게되면 데이터 전송하고 나면 서버에서 다시 return 있음.(잘 왔어~)

 

9. 순서보장

내부적으로 최적화 로직(드라이버에 모아놨다가 처리한다든지)에 따라 다른데, 기본적으로는 다버리고 패킷 2번부터 다시 보내라고 함.
그냥 되는게 아니라. 전송제어 정보 순서정보, 검증정보 들이 TCP 에 있어서 가능해짐.

10. UDP 프로토콜의 특징

  • 하얀 도화지에 비유(기능 거의 X)
  • 연결지향  -TCP 3 way handshake X
    • 데이터 양 적고 빠름. 인터넷이 모두 TCP 기반이고(90% 이상), 데이터 양이 많으므로 최적화를 더 하고 싶을때 프로토콜에 손을 못댐. 
    • 더 손을 댈수 있어 라고 할때 TCP 그대로 쓰고 UDP를 손대면 됨. 애플리케이션 레벨에서 수정 가능.
    • 최적화 가능하므로 최근에 각광 받는 중임. 
  • 데이터 전달 보증 X
  • 순서 보장 X
  • 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
  • IP와 거의 같음(올라가는게 거의 없는데 PORT정도 추가됨) + PORT + 체크섬 정도만 추가
    • PC에 IP 하나 할당되어있는데, 게임+음악듣기 하고 있으면, 내 IP로 여러 패킷이 옴. 이걸 어떻게 이건 게임용, 음악용 패킷을 구분하지 ? -> 이때 쓰는 것이 PORT
  • 애플리케이션에서 추가 작업 필요
반응형