Fact
- 15일차
Feeling
- ㅋㅋ
Findings
4계층 TCP
-
4계층 부터는 전달할/전달된 데이터에 대한 처리 역활이 있다.
- 예를 들자면 에러 복구
- 흐름제어로 오버플로를 막아주는것.
- 애플리케이션 식별로 어느 포트로 전달할지 결정.
- (4 계층)트랜스포트층의 프로토콜 TCP(Transmission Control Protocol), UDP(User Datagram Protocol)
- 애플리케이션 간의 송수신을 하는 경로를 커넥션이라고 한다.
-
3계층에서의 경로와 4계층에서 경로가 다르다
- 4계층에서 만드는 경로는 가상적인 통신로이다.
- 3계층은 이러저러한 이유로 데이터를 확실하게 주고 받는것을 보장 하자 않는다
- 4계층에서는 데이터를 전송을 시작하기 전에 미리 확인을 주고 받아 둔다. 이것을 커넥션 확립이라고 한다.
커넥션
- 커넥션 확립하면 가상 통로를 만들어서 송수신 측이 데이터 보내기/받기 가 준비가 되어 있다고 보장이 된다.
- 커넥션은 상대가 뎅터 전송을 허가 해줘야 해서 통신로를 확보하기 위해 상대에게(수신처) 데이터 전송의 허가 요청을 보낸다. 요청받은(수신처)에서 그것에 대한 허가를 송신처에게 알린다. 이것으로 상대에게 바르게 전달된 것을 확인할 수 있다. 마지막으로 수신처 측이 송신처에게 데이터 전송 허가 요청을 보낸다. 이로써 통로가 확보 되고 커넥션이 확립된것이다. 이것을 쓰리웨이 핸드쉐이크 라고 불린다.
tcp 헤더
ack 상대의 통신응답인 것을 나타낸다. syn 상대에 대한 접속요청인것을 나타낸다 fin 접속을 종료하는 것을 나타낸다.
세그먼트 분할
tcp는 애플리케이션으로 부터 받은 데이터를 복수의 세그먼트로 분할 캡슐화 한다. 세그먼트로 캡슐화 할때 알맞은 세그먼트 번호를 (선두에)부여 한다. 이것을 시퀀스 번호라고 한다.
에러 복구
위 세그먼트를 보낼때 시퀀스 번호가 왔는지 안왔는지로 판별하면서 에러 복구를 한다.
수신측에서 받은 시퀀스 번호와 다음 받을 세그먼트의 시퀀스 번호를 송신측에 보냄으로써 원활한 흐름제어를 완성한다.
에러가 발생했는데 상대방에게 도달하지 않았거나 확인응답을 받지 못할 경우에 제전송을 한다.
이때 기달리는데 기달리는것은 RTT값으로 판단한다. (예 3초 기달렸다가 다시 보내기…)
버퍼, 다중 전송
- 효율 좋은 통신을 하기 위해서 복수의 세그먼트 전송을 할 수 있다
- 이것을 하기 위해선 버퍼라는게 생긴다.
- 요청을 받으면 확인 응답 처리를 하기 전까지 버퍼에다가 저장 해놨다가 다 하면 응답을 보내준다.
- 이때 송신자 측은 수신자 측의 버퍼 크기를 알고 있어야 된다.
- 그래서 상대방이 확실하게 수신할수 있는 용량의 데이터만 송수신한다. 이것을윈도우 제어 라고 한다.
UDP
TCP의 특징 정확/확실을 실현한다
UDP의 특징은 아무것도 하지 않는 프로토콜로써 정확하지 않고 확실 하지 않다.
UDP 장점은 고속이라는 점.
브로드 캐스트가 필요한 애플리케이션도 UDP (책 참조)
DNS
Domain Name System은 이름과 IP주소를 대응시킨 시스템이다. 이름과 IP주소의 대응 데이터베이스를 갖고 있는 DNS 서버에 문의 해서 수신처의 IP 주소를 입수 할 수 있다.
도메인 명은 IP 주소와 마찬가지로 ICANN이 관리 하고 있다.
-
DNS 사용하는 이유
- 데이터 존송을 원하는 애플리케이션이나 사용자가 수신처의 IP주소를 알고 있어야한다. 그러나 이 IP 주소는 단순히 숫자 나열이라서 외우기 힘들다. 그래서 도메인 명을 사용한다.
dns 동작 예제
- 이제 아래 그림과 같이 PC 브라우저에서 www.naver.com을 입력합니다. 그러면 PC는 미리 설정되어 있는 DNS (단말에 설정되어 있는 이 DNS를 Local DNS라 부름, 제 PC의 경우는 203.248.252.2)에게 “www.naver.com이라는 hostname”에 대한 IP 주소를 물어봅니다.
- Local DNS에는 “www.naver.com에 대한 IP 주소”가 있을 수도 없을 수도 있습니다. 만약 있다면 Local DNS가 바로 PC에 IP 주소를 주고 끝나겠지요. 본 설명에서는 Local DNS에 “www.naver.com에 대한 IP 주소”가 없다고 가정합니다.
- Local DNS는 이제 “www.naver.com에 대한 IP 주소”를 찾아내기 위해 다른 DNS 서버들과 통신(DNS 메시지)을 시작합니다. 먼저 Root DNS 서버에게 “너 혹시 www.naver.com에 대한 IP 주소 아니?”라고 물어봅니다. 이를 위해 각 Local DNS 서버에는 Root DNS 서버의 정보 (IP 주소)가 미리 설정되어 있어야 합니다.
- 여기서 “Root DNS”라 함은 좀 특별한 녀석인데요(기능의 특별함이 아니고 그 존재감이..). 이 Root DNS 서버는 전세계에 13대가 구축되어 있습니다. 미국에 10대, 일본/네덜란드/노르웨이에 각 1대씩… 그리고 우리나라의 경우 Root DNS 서버가 존재하지는 않지만 Root DNS 서버에 대한 미러 서버를 3대 운용하고 있다고 합니다.
- Root DNS 서버는 “www.naver.com의 IP 주소”를 모릅니다. 그래서 Local DNS 서버에게 “난 www.naver.com에 대한 IP 주소 몰라. 나 말고 내가 알려주는 다른 DNS 서버에게 물어봐~“라고 응답을 합니다.
- 이 다른 DNS 서버는 “com 도메인”을 관리하는 DNS 서버입니다.
- 이제 Local DNS 서버는 “com 도메인을 관리하는 DNS 서버”에게 다시 “너 혹시 www.naver.com에 대한 IP 주소 아니?”라고 물어봅니다.
- 역시 “com 도메인을 관리하는 DNS 서버”에도 해당 정보가 없습니다. 그래서 이 DNS 서버는 Local DNS 서버에게 “난 www.naver.com에 대한 IP 주소 몰라. 나 말고 내가 알려주는 다른 DNS 서버에게 물어봐~“라고 응답을 합니다. 이 다른 DNS 서버는 “naver.com 도메인”을 관리하는 DNS 서버입니다.
- 이제 Local DNS 서버는 “naver.com 도메인을 관리하는 DNS 서버”에게 다시 “너 혹시 www.naver.com에 대한 IP 주소 있니?”라고 물어봅니다.
- “naver.com 도메인을 관리하는 DNS 서버”에는 “www.naver.com 호스트네임에 대한 IP 주소”가 있습니다. 그래서 Local DNS 서버에게 “응! www.naver.com에 대한 IP 주소는 222.122.195.6이야~“라고 응답을 해 줍니다.
- 이를 수신한 Local DNS는 www.naver.com에 대한 IP 주소를 캐싱을 하고(이후 다른 넘이 물어보면 바로 응답을 줄 수 있도록) 그 IP 주소 정보를 단말(PC)에 전달해 줍니다.
future action
- 나이가 들어서 그런지 기억이 가물가물 하다. 틈틈히 복습하자.