본문 바로가기
Today I learned

2020 11 30

by soheemon 2020. 11. 30.

# 네트워크 주소변환 

NAT: 전송되는 패킷의 dst address나 src address가 다른것으로 변환되는 과정을 의미한다.

예를들어서, 내부 IP를 사설 IP로 변경해주는 공유기를 NAT라우터라고 할 수 있다.

NAT 라우터가 주로 하는일은 사설 IP주소 1개를 여러대의 호스트가 공유할 수 있게 해주는것이다.

 

#포트매핑엔트리

공유기는 발신자와 수신자 끝점을 이어주는 맵핑정보를 생성해서 관리하는데, 이 정보를 포트매핑엔트리라고 한다.

 

#홀펀칭

공유기는 내부주소에 해당하는 ip/port에 외부 ip와 임의의 포트번호를 할당한 후 포트매핑엔트리에 넣는다. 이 작업을 홀펀칭이라고 한다. 재미있는 이름.

 

#공유기는 패킷 헤더를 변경한다.

1) 패킷헤더의 발신자IP를 내부 IP에서 사설 IP로 변경한다.

2) 때문에 외부에서는 내부IP는 모른다. 사설 IP만 알 뿐..

3) 반환받은 패킷을 공유기는, 포트매핑엔트리를 뒤져서 헤더에 수신자주소를 내부IP로 변경한 후 던져준다.

 

#블로킹 소켓

스레드가 외부 디바이스에 처리를 요청한 후 외부디바이스의 처리 응답을 기다리는 대기상태를 블록킹이라고 한다. 이상태에서 스레드는 waitale state상태가 된다.

CPU는 연산을 안하는 상태이다.

기록하려는 데이터가 완전히 기록될 때 까지 대기상태를 유지한다.

 

#블로킹과 소켓버퍼

소켓 버퍼는 ByteArray이다. 크기가 고정되어있지만 변경이 가능하다.

송신함수 send가 블로킹 되는경우

- 송신자의 송신버퍼가 가득 찼을때

- 수신자의 수신버퍼가 가득 찼을때

수신함수 recv가 블로킹 되는경우

- 수신자의 수신버퍼가 비어있을때

- 송신자의 송신버퍼가 비어있을때

'Today I learned' 카테고리의 다른 글

2020 12 03  (0) 2020.12.03
2020 12 02  (0) 2020.12.02
2020 11 29  (0) 2020.11.29
2020 11 27  (0) 2020.11.27
2020 11 26  (0) 2020.11.26

댓글