liamchoi943 / http

0 stars 0 forks source link

TCP UDP #2

Open liamchoi943 opened 3 years ago

liamchoi943 commented 3 years ago

IP의 수많은 문제들을 TCP 와 UDP가 해결해줌 TCP: The Transmission Control Protocol (TCP) is a transport protocol that is used on top of IP to ensure reliable transmission of packets. TCP includes mechanisms to solve many of the problems that arise from packet-based messaging, such as lost packets, out of order packets, duplicate packets, and corrupted packets.

UDP (User Datagram Protocol) is a communications protocol that is primarily used for establishing low-latency and loss-tolerating connections between applications on the internet. It speeds up transmissions by enabling the transfer of data before an agreement is provided by the receiving party.

인터넷 프로토콜 스택의 4계층. (위에서 아래순) 애플리케이션 계층 - HTTP, FTP 전송계층 - TCP,UDP 인터넷 계층 - IP 네트워크 인터페이스 계층.

만약에 미국에 있는 친구한테 메세지를 보낸다는 예제

  1. 프로그램이 (애플리케이션... 브라우저, 채팅 프로그램, 게임 등등) 이 메세지 생성.
  2. SOCKET 라이브러리를 통해 전달
  3. TCP 정보 생성, 메세지 데이터 포함
  4. IP 패킷 생성, TCP 데이터 포함
  5. 그담에 LAN카드를 통해 ethernet frame을 씌우고 인터넷으로 보냄.

IP패킷 정보 택배 박스라고 생각하면 됨... Untitled

TCP 특징 (전송 제어 프로토콜: TCP) 연결지향 - TCP 3way handshake (가상 연결) 데이터 전달 보증 순서 보장 신뢰할수있는 프로토콜 현재는 대부분 TCP사용

TCP 3way handshake

  1. SYN: 접속 요청

  2. STYN + ACK: 요청 수락

  3. ACK: 요청 수락 (gist: sender sends syn, receiver responds with syn and ack ("I got ur message, and I'm telling you i recevied your message, sender responds ("ahh Im responding to you to confirm Ive received ur message that you received my message)

  4. 데이터 전송. 요즘은 최적화 되서 3번에 데이터전송을 같이 해버린다. 3way handshake을 했다해서 실제로 연결된게 아니다... 중간에 수많은 노드들이 있기때문... 그래서 그냥 논리적/개념적으로 연결됬다고 이해하면됨...

//데이터 전달 보증

  1. 데이터 전송
  2. 데이터 잘 받았음 >> 이렇게 데이터를 받았는지 못받았는지 알수있음

순서보장

  1. 패킷 1,패킷2,패킷3순서로 전송.
  2. 패킷1, 패킷3, 패킷2 순서로 도착.
  3. 패킷2부터 다시보내!!! 라고함

UDP TCP랑 같은 계층에 있는 protocol임. 기능이 없음...ㅋ 하얀 도화지에 비유함. 3 way handshake 도 없고 데이터 전달 보증 도 없고 순서 보장도 안됨 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름 IP와 거의 같아 + PORT + 체크섬 정도만 추가 애플리케이션에서 추가 작업 필요

이건 그냥 내 IP로 많은 패킷이 들어올떄 UDP로 분류할때 쓰는거임

PORT: 항수 한번에 둘 이상 연결해야 하면? 예. 게임, 화상통화, 왭 브라우저 요청을 한꺼번에 한다면? 내 컴퓨터로 패킷들이 많이 들어오는데... 이걸 어떻게 구분하느냐... TCP세그먼트 출발지 port, 목적지 port가 있음. << IP와 TCP를 합하면 TCP/IP패킷이라함

port - 같은IP내에서 프로세스 구분 예: IP 200,200,200.2내에 11220포트로 연결하면 게임, 32202로 연결하면 화상통화 등등

비유: IP는 아파트 포트는 몇동 몇호!

DNS: IP는 기억하기 어려움... 또한... IP가 바뀔수도있다 DnS (Domain name system): 전화번호부, 도메인 명을 IP주소로 변환

예. 도메인 명 google.com의 IP는 200.200.200.2 등등

컴터가 DNS서버에 도메인명을 주고, dns서버가 IP주소로 응답