-
인터넷 네트워크 TCP/IP개발/프로그래밍 2022. 3. 16. 13:18
참조 : https://inf.run/hQwZ
인터넷 프로토콜IP
인터넷망에서 어떻게 친구에게 메시지를 보낼수 있을까?
IP 주소가 있기 때문에 가능해진다.
내 IP 주소 : 100.100.100.1
서버 :200.200.200.2
메시지는 패킷 단위로 전달이 된다.
패킷에는 출발지 IP,서버 IP , 메시지가 들어있다.
그러나 IP로만 통신 하기에는 여러 문제들을 가지고있다.
1. 패킷 받을 사람이 없어도 전송이 된다.
2. 패킷의 순서가 바뀌거나 사라질수있다.
3. 같은 IP에서 여러 애플리케이션을 사용하면 프로그램 구분이 힘듬
TCP
IP통신의 문제들을 TCP가 해결해 준다.
TCP 는 transmission control protocol , 전송 제어 프로토콜이다.
TCP UDP 는 인터넷 프로토콜스택의 3계층에 존재한다.
IP는 2계층, HTTP 는 4계층
TCP 는 이런 특징들이 있다.
연결지향적(3 way handshake) - 연결이 되어있는지 확인
데이터 전달 보증, 순서를 보증해준다는 특징이있다.
이런 특징들이 있기 때문에 전송 제어 프로토콜이라한다.
참조 : https://inf.run/hQwZ 메시지를 보내려 할때 메시지를 Socket라이브러리(라는것으로...) 감싸서 아래계층인 TCP에 전달한다.
그러면 TCP에서는 TCP정보를 감싸서 또 IP에 전달 하고
IP에서는 패킷을 감싸서 인터넷에 전송한다.
TCP/IP 패킷 정보에는
출발지 Port, 목적지 Port, 전송제어, 순서, 검증정보... 가 들어 간다.
이런 정보들이 들어가기에 연결,전달,순서가 보증이 된다.
연결 보증 - 3way handshake 를 사용하기 때문이다.
3 way handshake 는 다음과 같은 방식을 말한다.
1. 클라이언트가 SYN(접속요청) 이라는 메시지를 보내면
2. 서버가 SYN + ACK 를 보내고
3. 그 응답으로 클라이언트가 ACK(요청 수락) 를 보내는 방식이다.
즉 서로가 SYN과 ACK를 한번씩 보내고 연결 되었음을 확인하고 신뢰하게 된다.
데이터 전달 보증 - 클라이언트가 데이터를 보내면 서버가 응답을 해준다.
순서 보장 - 패킷 순서가 서버로 잘못 들어오면 잘못된 순서부터 다시 보내도록 한다.
PORT
같은 서버 IP 내에 여러 어플리케이션 을 사용할때
같은 IP 내에서 프로세스를 구분하기 위해 PORT 가 필요하다.
출발지 IP,PORT + 도착지 IP, PORT 가 패킷에 들어있기 떄문에
서버도 응답을 클라이언트에 보내줄수 있다.
'개발 > 프로그래밍' 카테고리의 다른 글
Swift 코드로 SOLID 이해하기 (0) 2022.05.01 HTTP 헤더 정보 , 캐시 (0) 2022.03.21 메모리 구조 (code,data,stack,heap) (0) 2021.11.14 객체지도 (0) 2021.11.07 [객체지향의 사실과 오해-2] 역할,책임,협력,책임주도 설계 (0) 2021.10.30