# 네트워크 주소변환
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 |
댓글