[2021.02.02.화] TIL

노을·2021년 2월 2일
0

TIL

목록 보기
34/81

👨‍⚕ 오늘의 컨디션

  • 💤 : 약 5 시간
  • 약간 피곤하긴 한대, 평소에 관심있어하는 네트워크 실습이라 각성이 된 것 같다.

⌛ 오늘 한 일

미션1. HTTP 요청

  • HTTP 공부 목적으로, 리다이렉트에 대한 조건은 따로 하지 않고 GET 메시지에 임의 삽입
  • GET /home/index.jsp HTTP/1.1

미션2. HTTP 응답

  • Response 메시지 타입별 파싱은 하지 않았습니다.
  • 헤더와 바디부분만 구분하였습니다.

ETC. WireShark

>- TCP Stream
  -  쉽게 읽을 수 있는 형태로 재조립



  • TCP/IP 프로토콜의 계층별 패킷의 변화를 볼 수 있는 세션 같음.



    • 자세한 건 나중에 필요할 때 찾자

미구현 기능

  • 리다이렉션 감지시 GET 메시지 자동변환 ( 구현하게 된다면, 재귀함수를 이용할 것 같습니다. )
  • Response 메시지 타입별 Parsing 기능
  • Response 메시지 수신시 마지막 라인을 감지하지 못하여, 소켓이 종료되지 않아 프로그램 또한 종료되지 않습니다.
    • < 임시 해결책 > "< /html>"가 감지되면 break를 걸어서 루프를 빠져나온다.
    • < 차후 해결책 > chunked, contentLength에 대한 공부를 한 후 데이터 길이를 맞춰서 루프를 돌릴 것 같습니다.

🔨 오늘의 삽질

2번째 이야기
💬상황: HTTP Resopnse 메시지의 헤더부를 출력하는데,
status code 등 많은 라인이 유실됐음.

🔎 문제원인

while() 루프로 response 메시지를 출력하는데, 간단히 말해서 readLine()을 2번 호출해서다.

  • K가 코드리뷰를 해주지 않았다면, 난 엄한곳을 의심 하느라 쉽게 찾지 못 했을거다.
  • 알고리즘데이때 LinkedList 관련 문제에서도 이번과 비슷하게 while()문 조건안에서 연산을 해서 문제가 된적이 있는데, 두 번은 실수가 아니다 정말 주의해야겠다.


🌙 느낀점

  • 이번 미션은 뭔가 할 수 있을 것 같은 느낌적인 느낌이 들어서,
    배경지식 개념 공부보다, 미션 구현을 우선적으로 했다. 말그대로 야생에 아무 준비도 없이 떨어진 기분이었다. 필요한 기능에 대한 예제들을 찾고 실험해보고 하는 과정들을 진행했다. 하지만, 전부 테스트하기에는 너무 시간이 부족할 것 같아 빨리 제출한 Kroach, Agust 세 분의 코드를 인간 인터프리터가 되어 한줄, 한줄 해석해가며 미션을 이해했다. 남의 코드를 보는 활동을 많이 해본적이 없어서 이해하는 데 정말 오래걸리고, 이해를 못하는 부분도 있었다. 하지만 HTTP 미션에 대해 감을 잡을 수 있었고, 100% 완벽 구현은 아니지만 일부 구현을 할 수 있게 됐다. 이론을 이해하기 어려울 땐, 여러 사람들의 코드를 보면서 내꺼로 만드는 학습을 하는 것도 괜찮은 방법인 것 같다.
  • 오늘 HTTP Resoponse의 데이터가 유실되는 이유를 몰라서 정말 헤맸다. 삽질을 그만하고 질문 내용을 정리해서 K에게 물어보았다. 하자만 너무 간단한 문제였고, 많이 부끄러웠다. 앞으로는 이렇게 쉬운 일로 헤매지 않게 좀 더 신경써서 코드를 작성해야할 것 같다.

참고

profile
카르페디엠

2개의 댓글

comment-user-thumbnail
2021년 2월 3일

노을 끝까지 노력하시더니 결국 해내셨군요👍 잘하시는 분들 코드보며 따라하는 게 실력 향상에 정말 좋은 것 같아요!

답글 달기